letsencrypt unter nginx scheitert mit Fehler 444

Von | 27. Oktober 2016

Fehler 444Für das Protokoll: letsencrypt funktioniert auch prima mit nginx unter Debian 8 (jessie)
Dafür benötigen wir ein Eintrag in der vhost:

location ~ /.well-known/acme-challenge/ {
    allow all;
}

Jetzt können wir starten mit:


certbot certonly --webroot -w /srv/www/domain/wordpress/ -d meine-domain.de -d www.meine-domain.de

/srv/www/domain/wordpress/ ist gleich dem root path aus dem vhost!

certbot schreibt temporär in das Root-Verzeichniss+/.well-known/acme-challenge/ seine Challange-Datei. Dann wird diese Datei(en) von letsencrypt-Server gelesen und damit authentifiziert. Danach löscht der certbot-Client diese Datei(en) wieder.

wenn ihr jetzt auf ein Fehler lauft wie:


 "GET /.well-known/acme-challenge/XXXZZZZZ...ZZYYYI HTTP/1.1" 444 0 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"

dann verweigert nginx die Auslieferung dieser Datei. Nach etwas suchen habe ich den Fehler bei mir Finden können. Eigentlich kein Fehler sondern so gewollt. Dabei hat folgender Eintrag in meiner vhost zugeschlagen:


location ~ /(\.|wp-config.php|liesmich.html|readme.html) {
return 444;
}

Dieser Eintrag schützt vor Zugriffen auf alle Datei und Verzeichnisse die mit einem „.“beginnen und eure wp-config. Diesen Eintrag ändern wir am besten zu:


location ~ /(\.htaccess|wp-config.php|liesmich.html|readme.html) {
return 444;
}

Er ist normalerweise nicht notwendig. Nur bei einer Fehlkonfiguration von nginx könnte ein Angreifer diese Datein herunter laden und damit zum Beispiel euer MySQL-Datenbank-Password auslesen.

So, jetzt sollte es auch bei Euch funktionieren!