Einführung

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.

Voraussetzungen

nginx illustration for: Voraussetzungen

Um dieser Anleitung zu folgen, benötigen Sie:

  • 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 the cloud provider verwenden, lesen Sie bitte unsere DNS Dokumentation für Details, wie Sie sie hinzufügen.
  • Ein A-Datensatz mit <^>example.com<^> mit Verweis auf die öffentliche IP-Adresse Ihres Servers.
  • Ein A-Datensatz mit www.<^>example.com<^>, der auf die öffentliche IP-Adresse Ihres Servers verweist.

Schritt 1 — Installieren von Certbot

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.

Schritt 2 — Bestätigen der Nginx-Konfiguration

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/&lt;^&gt;example.com&lt;^&gt;

				
			

Suchen Sie nach der Zeile server_name. Das sollte wie folgt aussehen:

				
					
[label /etc/nginx/sites-available/example.com]

...

server_name &lt;^&gt;example.com&lt;^&gt; www.&lt;^&gt;example.com&lt;^&gt;;

...

				
			

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.

Schritt 3 — Zulassen von HTTPS durch die Firewall

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:

				
					
[secondary_label Output]

Status: 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

				
			
				
					
[secondary_label Output]

Status: 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.

Schritt 4 — Abrufen eines SSL-Zertifikats

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 &lt;^&gt;example.com&lt;^&gt; -d &lt;^&gt;www.example.com&lt;^&gt;

				
			

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.

				
					
[secondary_label Output]

Please 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:

				
					
[secondary_label Output]

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/&lt;^&gt;example.com&lt;^&gt;/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/&lt;^&gt;example.com&lt;^&gt;/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.

Schritt 5 - Überprüfen der automatischen Erneuerung von Certbot

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

				
			
				
					
[secondary_label 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.

Zusammenfassung

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.