Openmediavault Letsencrypt fehler

ThePlayer

Commander
Registriert
Aug. 2011
Beiträge
3.060
Hi ich möchte unter Openmediavault mit einem Letsencrypt Docker meine NextCloud Installtioin absichern.
Ich habe schon soweit alles eingerichtet. Ich gehe dabei nach dem Tutorial vor
Doch wenn ich die Zertificate in der Kommandozeile mit dem Befehl docker logs -f letsencrypt erstellen will erhalte ich eine Fehlermeldung.
Generating new certificate
An unexpected error occurred:
pkg_resources.ContextualVersionConflict: (cryptography 2.6.1 (/usr/lib/python3.7/site-packages), Requirement.parse('cryptography>=2.8'), {'PyOpenSSL'})
Please see the logfile '/tmp/tmp8l9th1mp/log' for more details.
ERROR: Cert does not exist! Please see the validation error above. The issue may be due to incorrect dns or port forwarding settings. Please fix your settings and recreate the container

Woran könnte es liegen? Wo finde ich das Logfile aus der Meldung?
Liegt das Logfile auf dem Server? In diesem Fall wäre es ein Odroid HC2 darauf läuft ein Debian das mit dem Openmediavault Image installiert wird.
Ich habe die entsprechenden Ports in meinem Telekom Speedport Router eingerichtet.
 
Da ich in der Regel deutlich schneller lese als irgendwelche Video-"Tutorials" in denen sowieso 30% der Zeit sinnvoll vertrödelt und rum gelabert wird kann ich zu dem Tutorial nix sagen. Da ist mir auch meine Zeit zu schade für. Oder erwartest du allen ernstes, dass sich hier jemand dieses über einstündige Tutorial anguckt bis er an dem Punkt Container, Nextcloud und/oder SSL/TLS ankommt?

Zu deinen konkreten Fragen:
ThePlayer schrieb:
Befehl docker logs -f letsencrypt erstellen
Damit siehst du dir lediglich die Logs eines laufenden Containers an. Nicht mehr und nicht weniger. Der Fehler besagt, dass innerhalb des Containers pyOpenSSL mit Version 2.8 oder höher erwartet wird aber nur 2.6.1 vorhanden ist. Wende dich diesbezüglich an den Ersteller/Maintainer des Containers.

Das Logfile findest du innerhalb des Containers an der genannten Stelle, also /tmp/tmp8l9th1mp/log. Sofern du /tmp nicht in ein eigenes Volume gepackt hast, wovon ich jetzt mal nicht ausgehe, dann besteht das Verzeichnis und die Datei nur zur Laufzeit des Containers. Beendest du diesen und startest aus dem Image heraus diesen neu, ist die Logdatei weg. Liegt an der Funktionsweise von Docker und ist so korrekt.

Welche Ports haben deine Container, wie sind diese nach außen offen (exposed) und wie sehen deine Portweiterleitungen aus?
 
Ja ich hätte noch dem Timecode angeben sollen an welche stelle im Video es hackt.
Verlange ja auch nicht das sich jemand das ganze Video antut. Sollte nur dazu da sein um zu zeigen wie ich vorgegangen bin.

Leider weiß ich nicht wie ich zum Logfile des Containers komme. Meine Kenntnisse der Ordnerstruktur und der Befehle unter Linux sind sehr begrenzt. Ich habe ja zugriff mit Putty auf den Server.

Also ich habe wie in dem Video ab Minute 58:32 die Portfreigaben erstellt. Allerdings habe ich einen Speedport Router von der Telekom und die GUI sieht natürlich anders aus als beim der Fritzbox aus dem Video.
Deswegen ist mir nicht klar ob das so richtig ist da eine Portfreigabe HTTP ist und eine HTTPS zumindest laut dem GUI des Fritzbox zu sehen im Video bei Minute 59:22 geht um den Port 80 und 443.
Im Anhang kann man sehen wie es bei mir auf dem Speedport Router aussieht.
 

Anhänge

  • speedport.png
    speedport.png
    37,9 KB · Aufrufe: 1.556
Technisch gesehen musst keine Ranges angeben, hängt aber von den jeweiligen Gegebenheiten ab.
Für letsencrypt muss das System/Container, dass die Zertifikate beantragt, auf den Ports 80 & 443 erreichbar sein, du jedoch hast 80-90 und 450 extern erreichbar gemacht.

Logs des Containers: SSH auf dne Host, per docker ps die laufenden Container anzeigen lassen und mit docker exec 'id des nextcloud-containers' in den Container wechseln. Dann kannst per 'cd /gewünschter/pfad' ins Verzeichnis wechseln. Anzeige von Dateien per 'less $dateiname', scrollen mit Pfeiltasten und Beenden der Anzeige mit 'q'. Durch Eingabe von 'exit' verlässt du den Container wieder und befindest dich auf der Shell vom Host.

Du willst öffentlich erreichbare Serverdienste betreiben. Da gehört es dazu, dass du dich in viele Themengebiete einlesen und einarbeiten musst. Für den Anfang: https://wiki.ubuntuusers.de/Shell/ und alle dort genannten Grundlagenartikel aneignen. Ein NAS für privat einrichten und öffentlich erreichbare Serverdienste betreiben sind zwei unterschiedliche Dinge. Kontiniuerliches Patchen, absichern, aktualisieren und härten sind ab sofort deine neuen Hobbies und zwar langfristig. Vieles davon lässt sich automatisieren aber das Wissen dazu ist eben erforderlich bzw. man muss sich damit beschäftigen.

Ich rate dazu, ein Problem nach dem anderen anzugehen, quasi teile und herrsche. Mein Vorschlag wäre: Zuerst nur mariadb und Nextcloud im lokalen Netz ohne TLS. Wenn dies läuft und erreichbar ist, kümmerst du dich um dyndns. Das kann DuckDNS sein oder theoretisch jeder andere beliebige dyndns Anbieter. Wenn das läuft kümmerst dich um das Thema Letsencrypt & Portweiterleitung/Firewall.
Oder findest eine lesbare Anleitung. Der Timestamp zeigt nur die Portweiterleitung, erklärt aber nicht warum du eine Portrange (80-90) und Port 450 verwendest anstatt direkt nur 80 & 443.
 
Ist das ein Problem wenn das der Port 90 statt 80 und der Port 450 statt 443 erreichbar sind? Das sind die Ports aus dem Video. Ja leider bleibt das Video meist Erklärungen schuldig wieso dies oder jenes gemacht wird.
Ich erhalte jetzt das als Output mit Fehlermeldung.

Code:
$ docker logs -f letsencrypt
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 10-adduser: executing...

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
We gratefully accept donations at:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    100
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 20-config: executing...
[cont-init.d] 20-config: exited 0.
[cont-init.d] 30-keygen: executing...
generating self-signed keys in /config/keys, you can replace these with your own keys if required
Generating a RSA private key
..............+++++
.....................................+++++
writing new private key to '/config/keys/cert.key'
-----
[cont-init.d] 30-keygen: exited 0.
[cont-init.d] 50-config: executing...
Variables set:
PUID=1000
PGID=100
TZ=Europe/Berlin
URL=duckdns.org
SUBDOMAINS=thegreatxxxxx,thegreatxxxx
EXTRA_DOMAINS=
ONLY_SUBDOMAINS=true
DHLEVEL=2048
VALIDATION=http
DNSPLUGIN=
EMAIL=j@gmx.net
STAGING=

Created donoteditthisfile.conf
Creating DH parameters for additional security. This may take a very long time. There will be another message once this process is completed
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
......................................................................................................................................+.........................                         ..........................................+............................................................................................................+........                         ..................................................................+.............................................................................................                         ................................................................................................................................................................                         ........................+.......................................................................................................................................                         ................................................................................................................................................................                         ................................................................................................................................................................                         .........................+.......................................................+..............................................................................                         ...................+...........+..........+......................+.........................................................................+....................                         ................................................................................................................................................................                         ...................................................................................................+................................+...........................                         .......................+................+..........................+....................................+.....+.................................................                         ................................................................................................................................................................                         ................................................................................................................................................................                         ........+.........................................................................................................................+.............................                         ...............+................................+................................................+.........................+....................................                         ...........................................................................+...........................++*++*++*++*
DH parameters successfully created - 2048 bits
SUBDOMAINS entered, processing
SUBDOMAINS entered, processing
Only subdomains, no URL in cert
Sub-domains processed are:  -d thegreatxxx.duckdns.org -d thegreatxxx.duckdns.org
E-mail address entered: j@gmx.net
http validation is selected
Generating new certificate
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for thegreatxxxx.duckdns.org
http-01 challenge for thegreatxxxx.duckdns.org
Waiting for verification...
Challenge failed for domain thegreatxxxx.duckdns.org
Challenge failed for domain thegreatxxxx.duckdns.org
http-01 challenge for thegreatxxxx.duckdns.org
http-01 challenge for thegreatxxxx.duckdns.org
Cleaning up challenges
Some challenges have failed.
IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: thegreatxxxx.duckdns.org
   Type:   unauthorized
   Detail: Invalid response from
   http://thegreatxxxx.duckdns.org/.well-known/acme-challenge/RueUCN4AxzXfmaGtePd8USMFAPu7GGTYvYcY0fW1ukg
   [80.137.94.192]: "<!DOCTYPE
   html>\n<html>\n\t<head>\n\t\t<title>openmediavault - HTTP 404
   error</title>\n\t\t<meta charset=\"UTF-8\">\n\t\t<meta
   http-equiv=\"X-U"

   Domain: thegreatlxxxxx.duckdns.org
   Type:   unauthorized
   Detail: Invalid response from
   http://thegreatxxxx.duckdns.org/.well-known/acme-challenge/dQC1NP6Z7ELEhTbvbVqM6dXfSa-WPQlmZ3vVCAZO0Zo
   [80.137.94.192]: "<!DOCTYPE
   html>\n<html>\n\t<head>\n\t\t<title>openmediavault - HTTP 404
   error</title>\n\t\t<meta charset=\"UTF-8\">\n\t\t<meta
   http-equiv=\"X-U"

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
ERROR: Cert does not exist! Please see the validation error above. The issue may be due to incorrect dns or port forwarding settings. Please fix your settings a                         nd recreate the container
 
Kleiner Tipp: Es bringt 0 die URLs zu maskieren aber nicht deine öffentliche IP Adresse... Das Webinterface von Openmediavault Richtung Internet erreichbar zu machen ist auch keine gute Idee...

ThePlayer schrieb:
Ist das ein Problem [...]
Ja. Zumal mir auch gerade auffällt, dass du Quelle und Ziel vertauscht hast bei den Portweiterleitungen. Du hast extern 450 an intern 443 weitergeleitet sowie 80-90 an 80-90, korrekt wäre vermutlich extern 443 an intern 450.
Noch einmal: Wenn man nicht mal im Ansatz versteht und nachvollziehen kann was man da macht, sollte man die Finger davon lassen. Ich pfusche auch nicht an der Hauselektrik herum wenn ich nicht einmal das Ohmsche Gesetz verstehe oder weiß was ich da vor habe. Computer benutzen/verwenden oder mal ein Windows installieren hat nichts mit dem Thema Server & Netzwerkadministration zu tun. Aber hey ist deine Verantwortung und Haftung nicht meine und solange dein potentieller Botzombie keinen Schaden anrichtet...

Letsencrypt hat verschiedene Methoden ein Zertifikat auszustellen. Die simpelste ist die http01-Challenge. Wie dies grob abläuft kannst du hier nachlesen: https://letsencrypt.org/de/how-it-works/
Wichtig ist: Diese Methode funktioniert nur über die Ports 80 und 443. Es müssen aus dem Internet erreichbar beide Ports zum relevanten Webserver führen.
Da ich deine omv Installation so erreiche gehe ich davon aus, dass dessen Webinterface unter Port 80 läuft. Dein Nextcloud/Letsencrypt Geraffel 90 & 450, zumindest deute ich dies anhand deiner bisherigen Ausführungen. Kann aber auch was anderes sein und du hast nur andere Dinge aus der Anleitung genannt weil du die Zusammenhänge nicht kennst oder nachvollziehen kannst. Du musst also deine externen Ports 80 & 443 an intern 90 & 450 weiterleiten damit die Generierung (und zukünftige Verlängerung) der Zertifikate funktioniert.

Aufgrund deiner fehlerhaften Portforwardings scheitert die Validierung, siehe Zeile 71-77
 
Danke für den Tipp wieder was gelernt.
Ich verstehe mindestens im Ansatz was ich da mache und vorhabe. Nur sind meine Kenntnisse in Linux und Netzwerk nicht so tief. Aber ich brauche keine Belehrung das ich dies oder jenes nicht kann oder zu dumm bin. Sondern ich brauche Hilfe bei der Lösung eines Problems. Mir ist sehr wohl bewusst das ich alles richtig einstellen muss um mich gegen Angriffe von außen so gut wie möglich zu wappnen. Sobald ich den Server richtig am laufen habe wird dieser gehärtet und erst dann kommen da überhaupt Daten drauf. Vorher gibt es da zum Testen nur ein paar Wallpaper.

Zum Interface des Speedport Routers, da bin ich bisher davon ausgegangen das der Interne Port immer die beiden Zahlen links vom Pfeil sind und rechts dann der Externe Port ist.
So steht es in der Anleitung des Routers:
Möchten Sie keine Vorlage benutzen, tragen Sie die öffentlichen Ports, die auf interne Ports weitergeleitet werden sollen, in die Eingabefelder ein
So dank deines Hinweises hat jetzt alles mit Letsencrypt geklappt. Ich hatte vorher immer Fritzboxen gehabt und da hat alles Wunderbar geklappt. Also wieder was gelernt das die Telekom Router nicht so doll sind.
 
  • Gefällt mir
Reaktionen: snaxilian
Zurück
Oben