Ich setze den NGINX ja gerne sowohl als Web Server als auch als Reverse Proxy ein – fast genauso gerne setzte ich mittlerweile die Let´s Encrypt Zertifikate ein.
Hier eine kleine Anleitung wie ich das immer konfiguriere (Webroot unter Ubuntu):
1) Erstellen eines NGINX-Config-Snippet
wir erstellen einen Config-Datei
vim /etc/nginx/snippets/letsencrypt.conf
und dort einfügen (gegebenfalls das Verzeichnis unter root ändern):
location ^~ /.well-known/acme-challenge/ {
default_type „text/plain“;
root /var/www/letsencrypt;
allow all;
}
und mit :wq abspeichern
2) Anpassen der bestehenden NGINX-Konfig
Ich konfiguriere eigentlich meine Webseiten immer als HTTPS-only – das heißt jede Anfrage auf Port 80 (HTTP) auf 443 (HTTPS) umgeleitet.
Da die Domänen-Verifizierung von Let´s Encrypt über einen HTTP Aufruf gemacht wird, müssen wir allerdings hier eine Ausnahme erstellen.
Dazu passen wir unsere Webseiten Konfig an:
vim /etc/nginx/sites-available/meineseite
und fügen unser Snippet mittels include in dem Serverteil für HTTP hinzu:
server { listen 80; listen [::]:80; server_name www.meineseite.de; include /etc/nginx/snippets/letsencrypt.conf; # Redirect any HTTP request to HTTPS location / { return 301 https://www.meineseite.de;} error_log /var/log/nginx/meineseite-error.log; access_log /var/log/nginx/meineseite-access.log; }
Im Serverteil für HTTPS braucht hier nichts angepasst werden 🙂
3) Installieren des Let´s Encrypt Clients
Installation unter Ubuntu ist super einfach:
sudo apt-get install letsencrypt
4) erstellen des root-Verzeichnises für Let´s Encrypt
sudo mkdir -p /var/www/letsencrypt/.well-known/acme-challenge
Ich vergebe auch noch entsprechende Rechte (meistens läuft der NGINX ja als www-data User bzw. der User ist in der www-data-Gruppe)
sudo chown -R www-data:www-data /var/www/letsencrypt
5) NGINX reload
sudo systemctl reload nginx
6) Let´s Encrypt Client auführen
letsencrypt certonly –webroot -w /var/www/letsencrypt -d www.meineseite.de -d meinerseite.de –email email@meineseite.de –agree-tos
mittels -d domain.tld können noch weitere Domains – falls benötigt – hinzugefügt werden und unbedingt die Email nicht vergessen anzupassen!
Falls alles geklappt hat werden jetzt die Zertifikate ausgestellt – zu finden sind die Zertifikate unter /etc/letsencrypt/live/www.meineseite.de
7) HTTPS-Konfig anpassen
Jetzt müssen wir noch die neuen Zertifikate in die HTTPS-Konfig hinzufügen
vim /etc/nginx/sites-available/meineseite
und die Zertifikate angeben
ssl_certificate /etc/letsencrypt/live/www.meineseite.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.meineseite.de/privkey.pem;
mit :wq speichern – und wir sind fast fertig 🙂
8) Renew automatisieren
Die Let´s Encrypt Zertifikate haben die Einschränkung, dass sie nur 90 Tage gültig sind. Man kann hier aber über einen cron-job Abhilfe leisten:
sudo crontab -e
und die folgenden Zeilen hinzufügen
30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx
so wird automatisch das Zertifikat verlängert und die Konfig des NGINX aktualisiert
9) fertig 🙂
Quellen:
letsencrypt.org
GitHub
wenn ich nach deinem Bespiel gehe:
E: Paket letsencrypt kann nicht gefunden werden.
Das Paket letsencrypt gibts so aktuell nur auf Ubuntu. Welche Linux-Distribution wird den eingesetzt?
Ich empfehle sonst den certbot – ich werde da mal in nächster Zeit eine Anleitung dafür machen 🙂
Pingback:Let’s Encrypt mit NGINX auf Debian – Andreas' Blog
debian jessie
und Stretch 😉