Anmerkung der Redaktion – Der Blogbeitrag vom Februar 2016, in dem das ursprüngliche Verfahren zur Verwendung von Let’s Encrypt mit NGINX beschrieben wurde, verweist nun auf diese Seite. Die Anweisungen in diesem Beitrag sind veraltet.
Dieser Beitrag wurde aktualisiert, sodass keine Abhängigkeit mehr von certbot‑auto besteht, das die Electronic Frontier Foundation (EFF) in Certbot 1.10.0 für Debian und Ubuntu und in Certbot 1.11.0 für alle anderen Betriebssysteme als veraltet eingestuft hat. Weitere Einzelheiten und alternative Installationsmethoden finden Sie in diesem Beitrag der EFF.
Lesen Sie auch unseren Blogbeitrag von der nginx.conf 2015, in dem Peter Eckersley und Yan Zhu von der Electronic Frontier Foundation die damals neue Zertifizierungsstelle Let’s Encrypt vorstellen.
Es ist allgemein bekannt, dass die SSL/TLS-Verschlüsselung Ihrer Website zu höheren Platzierungen in den Suchergebnissen und mehr Sicherheit für Ihre Nutzer führt. Es gibt jedoch einige Hürden, die Websitebetreiber bisher davon abgehalten haben, SSL einzusetzen.
Zwei der größten Hürden waren bislang die Kosten und die manuellen Prozesse, die mit der Beschaffung eines Zertifikats verbunden sind. Doch dank Let’s Encrypt spielen sie heute keine Rolle mehr. Let’s Encrypt stellt allen kostenlos SSL/TLS-Verschlüsselung zur Verfügung.
Let’s Encrypt ist eine kostenlose, automatisierte und offene Zertifizierungsstelle (CA). Ja, Sie haben richtig gelesen: kostenlose SSL/TLS-Zertifikate. Von Let’s Encrypt ausgestellte Zertifikate werden heute von den meisten Browsern als vertrauenswürdig eingestuft, darunter auch ältere Browser wie Internet Explorer unter Windows XP SP3. Darüber hinaus automatisiert Let’s Encrypt sowohl die Ausstellung als auch die Erneuerung von Zertifikaten vollständig.
In diesem Blogbeitrag erläutern wir, wie Sie mit dem Let’s-Encrypt-Client Zertifikate erstellen und NGINX Open Source sowie NGINX Plus automatisch für deren Verwendung konfigurieren.
So funktioniert Let’s Encrypt
Vor der Ausstellung eines Zertifikats überprüft Let’s Encrypt, ob Sie Inhaber Ihrer Domain sind. Der auf Ihrem Host ausgeführte Let’s Encrypt-Client erstellt eine temporäre Datei (ein Token), die die erforderlichen Informationen enthält. Anschließend ruft der Validierungsserver von Let’s Encrypt die Datei über eine HTTP-Anfrage ab und validiert das Token. Dadurch wird bestätigt, dass der DNS-Eintrag Ihrer Domain auf den Server verweist, auf dem der Let’s Encrypt-Client ausgeführt wird.
Voraussetzungen
Bevor Sie mit Let’s Encrypt beginnen, müssen Sie:
- Sie müssen NGINX oder NGINX Plus installiert haben.
- Sie müssen Eigentümer des für das Zertifikat registrierten Domainnamens sein oder die Kontrolle darüber haben. Wenn Sie keinen registrierten Domainnamen haben, können Sie einen Domainnamen-Registrar wie GoDaddy oder dnsexit nutzen.
- Erstellen Sie einen DNS-Eintrag, der Ihren Domainnamen mit der öffentlichen IP-Adresse Ihres Servers verknüpft.
Jetzt können Sie Let’s Encrypt ganz einfach mit NGINX Open Source oder NGINX Plus einrichten (der besseren Lesbarkeit halber verwenden wir im Folgenden nur noch die Bezeichnung „NGINX“).
Hinweis: Wir haben das in diesem Blogbeitrag beschriebene Verfahren unter Ubuntu 16.04 (Xenial) getestet.
1. Let’s-Encrypt-Client herunterladen
Laden Sie zunächst den Let’s-Encrypt-Client certbot herunter.
Wie bereits erwähnt, haben wir die Anleitung unter Ubuntu 16.04 getestet. Für diese Plattform sind die folgenden Befehle geeignet:
$ apt-get update$ sudo apt-get install certbot
$ apt-get install python-certbot-nginxVerwenden Sie unter Ubuntu 18.04 und neueren Versionen stattdessen die Python-3-Version:
$ apt-get update$ sudo apt-get install certbot
$ apt-get install python3-certbot-nginx2. NGINX einrichten
certbot kann NGINX automatisch für SSL/TLS konfigurieren. Dazu sucht und ändert es den server-Block in Ihrer NGINX-Konfiguration, der eine server_name-Direktive mit dem Domainnamen enthält, für den Sie ein Zertifikat anfordern. In unserem Beispiel lautet die Domain www.example.com.
- Wenn Sie von einer Neuinstallation von NGINX ausgehen, erstellen Sie mit einem Texteditor im Verzeichnis /etc/nginx/conf.d eine Datei mit dem Namen domain‑name.conf (in unserem Beispiel also www.example.com.conf).
- Geben Sie Ihren Domainnamen (und gegebenenfalls Varianten) mit der
server_name-Direktive an:
server { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
}- Speichern Sie die Datei und führen Sie anschließend diesen Befehl aus, um die Syntax Ihrer Konfiguration zu überprüfen und NGINX neu zu starten:
$ nginx -t && nginx -s reload3. SSL/TLS-Zertifikat beziehen
Das NGINX-Plug-in für certbot übernimmt bei Bedarf die Neukonfiguration von NGINX und das erneute Laden der Konfiguration.
- Führen Sie den folgenden Befehl aus, um Zertifikate mit dem NGINX-Plug-in zu generieren:
$ sudo certbot --nginx -d example.com -d www.example.com- Folgen Sie den Anweisungen von
certbot, um Ihre HTTPS-Einstellungen zu konfigurieren. Dazu müssen Sie Ihre E-Mail-Adresse eingeben und den Nutzungsbedingungen von Let’s Encrypt zustimmen.
Nach Abschluss der Zertifikatserstellung wird NGINX mit den neuen Einstellungen neu geladen. certbot gibt eine Meldung aus, die bestätigt, dass das Zertifikat erfolgreich erstellt wurde, und den Speicherort des Zertifikats auf Ihrem Server angibt.
Congratulations! You have successfully enabled https://example.com and https://www.example.com
-------------------------------------------------------------------------------------
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com//privkey.pem
Your cert will expire on 2017-12-12.Hinweis: Let’s-Encrypt-Zertifikate laufen nach 90 Tagen ab (im Beispiel am 12.12.2017). Informationen zur automatischen Verlängerung von Zertifikaten finden Sie weiter unten unter „Automatische Verlängerung von Let’s-Encrypt-Zertifikaten“.
Wenn Sie sich domain‑name.conf ansehen, sehen Sie, dass certbot die Datei geändert hat:
server { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
listen 443 ssl; # managed by Certbot
# RSA certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Redirect non-https traffic to https
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
}4. Let’s-Encrypt-Zertifikate automatisch erneuern
Let’s-Encrypt-Zertifikate laufen nach 90 Tagen ab. Wir empfehlen Ihnen, Ihre Zertifikate automatisch zu erneuern. Dazu fügen wir einen cron-Job zu einer vorhandenen crontab-Datei hinzu.
- Öffnen Sie die crontab-Datei.
$ crontab -e- Fügen Sie den Befehl
certbotso hinzu, dass er täglich ausgeführt wird. In diesem Beispiel führen wir den Befehl jeden Tag um 12 Uhr mittags aus. Der Befehl prüft, ob das Zertifikat auf dem Server innerhalb der nächsten 30 Tage abläuft, und erneuert es gegebenenfalls. Die Option--quietweistcertbotan, keine Ausgabe zu erzeugen.
0 12 * * * /usr/bin/certbot renew --quiet- Speichern und schließen Sie die Datei. Alle installierten Zertifikate werden automatisch erneuert und neu geladen.
Zusammenfassung
Wir haben den Let’s-Encrypt-Agent installiert, um SSL/TLS-Zertifikate für einen registrierten Domainnamen zu generieren. Wir haben NGINX für die Verwendung der Zertifikate konfiguriert und die automatische Zertifikatserneuerung eingerichtet. Mit Let’s-Encrypt-Zertifikaten für NGINX und NGINX Plus können Sie innerhalb weniger Minuten eine einfache, sichere Website in Betrieb nehmen.
Wenn Sie Let’s Encrypt mit NGINX Plus selbst ausprobieren möchten, starten Sie noch heute Ihre kostenlose 30-Tage-Testversion oder kontaktieren Sie uns, um Ihre Anwendungsfälle zu besprechen.
Zugehörige Dokumentation
HTTP-Datenverkehr zu Upstream-Servern absichern
TCP-Datenverkehr zu Upstream-Servern absichern
SSL-Terminierung mit NGINX
Über den Autor

Ähnliche Blogbeiträge
Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.
Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.
Ankündigung von NGINX Plus R16
NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.
5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.