Let´s Encrypt ist eine Zertifizierungsstelle (CA), die eine einfache Möglichkeit bietet, kostenlose TLS/SSL-Zertifikate zu erhalten und zu installieren. Dadurch können Sie die verschlüsselten HTTPS auf Webservern bereitstellen. Es vereinfacht den Prozess, indem ein Software-Client, Certbot, bereitgestellt wird, der versucht, die meisten (wenn nicht alle) der erforderlichen Schritte zu automatisieren. Derzeit ist der gesamte Prozess zum Abrufen und Installieren eines Zertifikats sowohl auf Apache als auch auf Nginx vollständig automatisiert.
In diesem Tutorial nutzen Sie Certbot, um ein kostenloses SSL-Zertifikat für Nginx auf Ubuntu 20.04 zu erhalten und Ihr Zertifikat so einzurichten, dass es automatisch erneuert wird.
Dieses Tutorial verwendet eine separate Nginx Serverkonfiguration anstelle der Standarddatei. Wir empfehlen die Erstellung neuer Nginx-Serverblockdateien für jede Domäne, da so häufige Fehler vermieden werden können und die Standarddateien als Fallback-Konfiguration erhalten bleiben.
Um dieser Anleitung zu folgen, benötigen Sie:
Ein Ubuntu 20.04-Server, der gemäß dem Tutorial Ersteinrichtung des Servers für Ubuntu 20.04 eingerichtet wurde, einschließlich eines Nicht-root-Benutzers mit sudo-Berechtigung und einer Firewall.
Einen registrierten Domänennamen. In diesem Tutorial wird durchgehend example.com
genutzt. Sie können einen Domänennamen unter Namecheap erwerben oder einen kostenlosen von Freenom herunterladen oder einfach die Domänenregistrierungsstelle Ihrer Wahl verwenden.
Die beiden folgenden DNS-Einträge für Ihren Server eingerichtet. Wenn Sie DigitalOcean verwenden, lesen Sie bitte unsere DNS Dokumentation für Details, wie Sie sie hinzufügen.
example.com
mit Verweis auf die öffentliche IP-Adresse Ihres Servers.www.example.com
, der auf die öffentliche IP-Adresse Ihres Servers verweist.Nginx wird gemäß Installieren von Nginx unter Ubuntu 20.04 installiert. Stellen Sie sicher, dass Sie für Ihre Domäne einen Serverblock haben. In diesem Tutorial nutzen wir /etc/nginx/sites-available/example.com
als Beispiel.
Der erste Schritt zur Nutzung von Let’s Encrypt, um ein SSL-Zertifikat zu erhalten, ist die Installation der Certbot-Software auf Ihrem Server.
Installieren Sie Certbot und das Nginx Plugin mit apt
:
- sudo apt install certbot python3-certbot-nginx
Certbot ist nun einsatzbereit, aber damit SSL für Nginx damit automatisch konfiguriert werden kann, müssen wir einige Bereiche der Nginx-Konfiguration überprüfen.
Certbot muss in Ihrer Nginx-Konfiguration den richtigen Serverblock
finden können, damit SSL automatisch konfiguriert werden kann. Dazu hält er nach einer server_name
-Anweisung Ausschau, die zur Domäne passt, für die Sie ein Zertifikat anfordern.
Wenn Sie den Schritt zur Einrichtung des Serverblocks im Nginx Installations-Tutorial befolgt haben, sollten Sie einen Serverblock für Ihre Domäne unter /etc/nginx/sites-available/example.com
mit der Anweisung server_name
haben, der bereits entsprechend eingerichtet wurde.
Um dies zu überprüfen, öffnen Sie die Konfigurationsdatei für Ihre Domäne mit nano
oder einem anderen Texteditor:
- sudo nano /etc/nginx/sites-available/example.com
Suchen Sie nach der Zeile server_name
. Das sollte wie folgt aussehen:
...
server_name example.com www.example.com;
...
Wenn Sie sie gefunden haben, schließen Sie den Editor und fahren Sie mit dem nächsten Schritt fort.
Sollten Sie sie nicht finden, aktualisieren Sie entsprechend. Speichern Sie dann die Datei, beenden Sie den Editor und überprüfen Sie die Syntax Ihrer Konfigurationsbearbeitungen:
- sudo nginx -t
Wenn Sie einen Fehler erhalten, öffnen Sie die Serverblockdatei und überprüfen Sie sie auf Schreibfehler oder fehlende Zeichen. Sobald die Syntax Ihrer Konfigurationsdatei korrekt ist, laden Sie Nginx neu, um die neue Konfiguration zu laden:
- sudo systemctl reload nginx
Certbot kann nun den richtigen Serverblock
finden und automatisch aktualisieren.
Als Nächstes aktualisieren wir die Firewall, um den HTTPS-Datenverkehr zu ermöglichen.
Wenn Sie die UFW
-Firewall aktiviert haben, wie im Leitfaden zu den Voraussetzungen empfohlen, müssen Sie die Einstellungen so anpassen, dass Sie den HTTPS-Datenverkehr zulassen. Praktischerweise registriert Nginx einige Profile mit ufw
bei der Installation.
Sie können die aktuelle Einstellung sehen, indem Sie Folgendes eingeben:
- sudo ufw status
Sie sieht wahrscheinlich etwa so aus, was bedeutet, dass nur HTTP-Verkehr zum Webserver zugelassen ist:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Um den HTTPS-Verkehr zu ermöglichen, erlauben Sie das Nginx Full Profil und löschen Sie die Zulassung des redundanten Nginx HTTP Profils:
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
Ihr Status sollte nun wie folgt aussehen:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Als Nächstes führen wir Certbot aus und holen unsere Zertifikate ab.
Certbot bietet eine Vielzahl von Möglichkeiten, um SSL-Zertifikate über Plugins zu erhalten. Das Nginx-Plugin übernimmt die Neukonfiguration von Nginx und das Neuladen der Konfiguration, wenn nötig. Geben Sie Folgendes ein, um dieses Plugin zu verwenden:
- sudo certbot --nginx -d example.com -d www.example.com
Damit wird Certbot
mit dem --nginx
Plugin ausgeführt, wobei über -d
die Domänennamen angegeben werden, für die das Zertifikat gültig sein soll.
Wenn Sie Certbot
zum ersten Mal ausführen, werden Sie aufgefordert, eine E-Mail-Adresse einzugeben und die Bedingungen des Dienstes zu akzeptieren. Danach kommuniziert Certbot
mit dem Let’s Encrypt-Server und stellt dann anhand einer Prüfung sicher, dass Sie die Domäne, für die Sie das Zertifikat anfordern, auch kontrollieren.
Nach erfolgreicher Überprüfung fragt Certbot
, wie Sie Ihre HTTPS-Einstellungen konfigurieren möchten.
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Treffen Sie Ihre Wahl und drücken Sie dann ENTER
. Die Konfiguration wird aktualisiert und Nginx zum Abholen der neuen Einstellungen neu geladen. Certbot
schließt mit einer Mitteilung, dass der Prozess erfolgreich war und wo Ihre Zertifikate gespeichert sind:
OutputIMPORTANT 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 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Ihre Zertifikate werden heruntergeladen, installiert und geladen. Versuchen Sie, Ihre Website mit https://
neu zu laden und beachten Sie den Sicherheitsindikator Ihres Browsers. Es sollte angezeigt werden, dass die Seite ordnungsgemäß gesichert ist. Meist sieht man das an einem Schloss-Symbol. Wenn Sie Ihren Server mit dem SSL Labs Server Test testen, erhält er eine A-Bewertung.
Wir wollen abschließend den Erneuerungsvorgang testen.
Zertifikate von Let’s Encrypt sind nur neunzig Tage gültig. Das soll Benutzer dazu ermutigen, die Erneuerung ihrer Zertifikate zu automatisieren. Das Certbot
-Paket, das wir installiert haben, übernimmt diese Aufgabe für uns und fügt hierfür einen systemd Timer hinzu, der sicherstellt, dass sie zweimal täglich ausgeführt wird und jedes Zertifikat automatisch nach dreißig Tagen erneuert wird.
Sie können den Status des Timers mit systemctl
abfragen:
- sudo systemctl status certbot.timer
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Um den Erneuerungsprozess zu testen, können Sie mit certbot
einen Probelauf durchführen:
- sudo certbot renew --dry-run
Wenn Sie keine Fehler sehen, sind Sie fertig. Bei Bedarf erneuert Certbot Ihre Zertifikate und lädt Nginx neu, um die Änderungen zu übernehmen. Wenn der automatische Erneuerungsprozess jemals fehlschlägt, sendet Let’s Encrypt eine Nachricht an die von Ihnen angegebene E-Mail und warnt Sie, wenn Ihr Zertifikat bald abläuft.
In diesem Tutorial haben Sie den Let’s Encrypt-Client Certbot
installiert, SSL-Zertifikate für Ihre Domäne heruntergeladen, Nginx so konfiguriert, dass es diese Zertifikate verwendet und die automatische Zertifikatserneuerung eingerichtet. Wenn Sie weitere Fragen zur Verwendung von Certbot haben, ist die Dokumentation ein guter Ausgangspunkt.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!