Virtuelles Linux mit Docker nginx im Container letsencrypt Fehler. Was mache ich falsch?

Hallo Community,

ich habe auf einem realen Windows 10 Pro 1809 Build 17763.43 unter Virtualbox 6.0.4r12843 ein virtuelles Lubuntu 18.04.2 LTS mit 4.15.0-47-generic Kernel laufen.

In diesem virtuellem Linux habe ich Docker installiert. Und mit docker network create --subnet=172.18.0.0/16 mynet das Netzwerk mynet erstellt.

Dann habe ich einen Container mit dem Namen myportainer basierend auf den Image portainer/portainer (IP = 172.18.0.2 Port = 9000) und ein Container mit dem Namen mynginx basierend auf dem nginx Image (IP = 172.18.0.3 Port = 80 und 443) im Netzwerk mynet erstellt, und diese gestartet.

Anschließend ein Terminal geöffnet und mit docker exec -it mynginx /bin/bash in die Bash Shell des Containers mynginx gewechselt.

Dort mit apt-get update und apt-get upgrade sichergestellt das die Pakete aktuell sind. Anschließend mit apt-get install nano installiert.

Nachfolgend mit apt-get install git installiert und dann mit git clone https://github.com/letsencrypt/letsencrypt runtergeladen.

Mit nano /etc/nginx/conf.d/default.conf geöffnet den Inhalt gelöscht und folgendes eingegeben:

upstream portainer {
server 172.18.0.2:9000;
}

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name docker.mydomain.de;

root /usr/share/nginx/html;
index index.html index.htm;

location / {
try_files $uri $uri/ /index.html;
}

location /portainer/ {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://portainer/;
}

location /portainer/api/websocket/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://portainer/api/websocket/;
}

location ^~ /.well-known/acme-challenge {
   default_type text/plain;
   root /usr/share/nginx/html/letsencrypt;
}

location = /.well-known/acme-challenge/ {
   return 404;
}

}

gespeichert und nano geschlossen. Mit nginx -t die Syntax überprüfen lassen und nginx -s reload ausgeführt.

Immer noch im Terminal des mynginx Containers mit mkdir -p /usr/share/nginx/html/letsencrypt/.well-known/acme-challenge die Verzeichnisse angelegt.

Mit cd /usr/share/nginx/html/letsencrypt/.well-known/acme-challenge ins Verzeichnis gewechselt.

Ein zweites Terminal mit der Bash Shell des Containers geöffnet und dort ./letsencrypt-auto certonly –a manual –-rsa-key-size 4096 ausgeführt.

An dem Punkt

Create a file containing just this data: DATEN und And make it available on your web server at this URL: http://docker.mydomain.de/.well-known/acme-challenge/DATEI
 
Press Enter to Continue

Im ersten Terminal mit echo -n DATEN > DATEI die Aufforderung aus dem zweitem Terminal erfüllt.

Die URL aus dem zweiten Terminal im Browser geöffnet. Der Inhalt (DATEN) der DATEI wurden angezeigt.

Im zweitem Terminal „enter“ gedrückt und letsencrypt lief weiter und gab eine Fehler aus:

Some challenges have failed.

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: docker.mydomain.de
   Type:   unauthorized
   Detail: Invalid response from
   http://docker.mydomain.de/.well-known/acme-challenge/DATEI
   [2a01:4f8:190:62f4::13]:
   "<html><head><title>docker.mydomain.de</title></head><body><center><b>Diese
   Domain ist unkonfiguriert.</b></center></body></html>"

   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.

In meiner Frizbox habe ich in den Netzwerk Einstellungen unter DNS-Rebind-Schutz die Domäne docker.mydomain.de als Ausnahme hinzugefügt.

In der /etc/hosts des virtuellen Linux ist die Domäne mit IP eingetragen.

Was sollte ich noch wo und wie machen, damit es mit dem Letsencrypt funktioniert ?

Der ACME Server von Letsencrypt muss die Domain auflösen können. So wie ich dich verstanden habe hapert es schon daran…

Was soll ich tun damit der AMCE Server von Letsencrypt die Domain auflössen kann ?

Du solltest eine URL haben, die nicht nur in deinem Netzwerk auflöst, weil du mit der hosts-Datei gehackt hast.

Du brauchst eine (Sub-) Domain, die im Internet funktioniert und auf den Rechner zeigt, auf dem du Letsencrypt laufen lässt

Also ist Letsencrypt im Prinzip gar nicht kostenlos, Sondern kostet den Preis einer registrierten Domain bei einem Provider meiner Wahl. Auf dieser muss ich dann den CNAME-Eintrag der eigenen Domain auf die DynDNS-Domain setzen die meinen Rechner lokalisiert. Dann zahl ich ca. 60€ im Jahr nur für das Zertifikat.

Falls ich dich richtig verstanden habe!

Nein. Du braucht Strom, irgendwo einen Computer, einen Internetzugang und musst Geld für das Erwerben Deiner Kenntnisse haben.,

Du bekommst halt kein Zertifikat für eine IP-Nummer (naja, inkompetente Ausnahmen bestätigen diese Regel …) sondern brauchst einen CNAME, einen A-Record, einen AAAA-Record oder was auch immer im DNS auflöst.

Ich kann Dir auch eine Subdomain einrichten, wenn das Dein Problem löst. Aber

ist halt ziemlich sicher nicht Deine Domain und darübehinaus offenbar nicht so eingerichtet, dass es für Deine ACME-Challenge eine sinnvolle Antwort liefert …

Nicht dass ich DynDNS für eine sonderlich geile Idee für die Verwendung mit Zertifikaten halte, aber warum gibst Du nicht gleich Deinen DynDNS-Namen an?

1 Like