Wie man Nginx unter Ubuntu 18.04 mit Let's Encrypt absichert

0 Aktien
0
0
0
0

Einführung

Let's Encrypt ist eine Zertifizierungsstelle (CA), die es ermöglicht, kostenlose TLS/SSL-Zertifikate zu beziehen und zu installieren und damit verschlüsseltes HTTPS auf Webservern zu aktivieren. Der Software-Client Certbot vereinfacht diesen Prozess und automatisiert die meisten (wenn nicht alle) erforderlichen Schritte. Aktuell ist der gesamte Prozess des Beziehens und Installierens eines Zertifikats auf Apache und Nginx vollständig automatisiert.

In diesem Tutorial verwenden Sie Certbot, um ein kostenloses SSL-Zertifikat für Nginx unter Ubuntu 18.04 zu erhalten und die automatische Erneuerung Ihres Zertifikats zu aktivieren.

Voraussetzungen
  • Ein Ubuntu 18.04-Server wurde gemäß dieser Anleitung zur ersten Servereinrichtung für Ubuntu 18.04 eingerichtet, einschließlich eines sudo-Benutzers ohne Root-Rechte und einer Firewall.
  • Ein vollständig registrierter Domainname. In diesem Tutorial wird durchgehend „Ihre_Domain“ verwendet. Sie können einen Domainnamen bei Namecheap kaufen, einen kostenlosen Domainnamen bei Freenom erhalten oder einen Domain-Registrar Ihrer Wahl nutzen.
  • Die folgenden beiden DNS-Einträge sind für Ihren Server eingerichtet. Weitere Informationen zum Hinzufügen finden Sie in dieser Einführung zu DigitalOcean DNS.
  • Ein Eintrag mit Ihrer_Domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
  • Ein Eintrag mit www.your_domain, der auf die öffentliche IP-Adresse Ihres Servers verweist.
  • Nginx wird gemäß der Anleitung zur Installation von Nginx unter Ubuntu 18.04 installiert. Stellen Sie sicher, dass Sie einen Serverblock für Ihre Domain eingerichtet haben. Auch in diesem Tutorial wird die Datei `/etc/nginx/sites-available/your_domain` als Beispiel verwendet.

Schritt 1 – Certbot installieren

Der erste Schritt zur Verwendung von Let's Encrypt zum Erhalt eines SSL-Zertifikats besteht darin, die Certbot-Software auf Ihrem Server zu installieren.

Das Certbot-Projekt empfiehlt den meisten Benutzern, Software über Snap zu installieren, einen Paketmanager, der ursprünglich von Canonical (dem Unternehmen hinter Ubuntu) entwickelt wurde und mittlerweile in vielen Linux-Distributionen verfügbar ist:

sudo snap install --classic certbot

Ihre Ausgabe zeigt die aktuelle Version von Certbot und eine erfolgreiche Installation an:

Output
certbot 1.21.0 from Certbot Project (certbot-eff✓) installed

Erstellen Sie als Nächstes einen symbolischen Link zur neu installierten ausführbaren Datei `/snap/bin/certbot` im Ordner `/usr/bin/`. Dadurch wird sichergestellt, dass der Befehl `certbot` auf Ihrem Server ordnungsgemäß ausgeführt werden kann. Führen Sie dazu den folgenden `ln`-Befehl aus. Dieser enthält die Option `-s`, die einen symbolischen Link (Softlink) anstelle eines Hardlinks erstellt:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Certbot ist jetzt einsatzbereit, aber bevor es SSL für Nginx konfigurieren kann, müssen Sie einige Nginx-Einstellungen überprüfen.

Schritt 2 – Nginx-Konfiguration überprüfen

Certbot benötigt den korrekten Serverblock in Ihrer Nginx-Konfiguration, um SSL automatisch zu konfigurieren. Dazu sucht es nach einer server_name-Direktive, die mit der Domain übereinstimmt, für die Sie ein Zertifikat anfordern.

Wenn Sie die empfohlenen Schritte zur Einrichtung des Serverblocks im Nginx-Installations-Tutorial befolgen, verfügen Sie über einen Serverblock für Ihre Domain in /etc/nginx/sites-available/your_domain, in dem die Direktive server_name bereits entsprechend eingerichtet ist.

Um dies zu überprüfen, öffnen Sie die Serverblockdatei Ihrer Domain mit nano oder Ihrem bevorzugten Texteditor:

sudo nano /etc/nginx/sites-available/your_domain

Suchen Sie die vorhandene Zeile „server_name“. Sie sollte folgendermaßen aussehen:

...
server_name your_domain www.your_domain;
...

Falls ja, beenden Sie Ihren Editor und fahren Sie mit dem nächsten Schritt fort.

Falls dies nicht der Fall ist, aktualisieren Sie die Datei entsprechend. Speichern Sie anschließend die Datei und beenden Sie den Editor. Wenn Sie nano verwenden, können Sie dies mit Strg + X, dann Y und der Eingabetaste tun.

Überprüfen Sie nun die Syntax Ihrer Konfigurationsänderungen:

sudo nginx -t

Falls ein Fehler auftritt, öffnen Sie die Serverblockdatei erneut und prüfen Sie sie auf Tippfehler 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 aktualisieren.

Als Nächstes aktualisieren Sie die Firewall, um HTTPS-Datenverkehr zuzulassen.

Schritt 3 – HTTPS in der Firewall zulassen

Wenn Sie die ufw-Firewall aktiviert haben, wie in den Anleitungen empfohlen, müssen Sie die Einstellungen anpassen, um HTTPS-Verkehr zuzulassen. Glücklicherweise registriert Nginx bei der Installation einige Profile bei ufw.

Sie können die aktuellen Einstellungen überprüfen, indem Sie Folgendes ausführen:

sudo ufw status

Sie sollten eine Ausgabe wie die folgende erhalten, die anzeigt, dass nur HTTP-Verkehr zum Webserver zugelassen ist:

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 zusätzlichen HTTPS-Datenverkehr zu ermöglichen, erteilen Sie die vollständigen Nginx-Profilberechtigungen und entfernen Sie die zusätzlichen Nginx-HTTP-Berechtigungen:

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

Wenn Sie nun den Befehl ufw status ausführen, werden diese neuen Regeln angezeigt:

sudo ufw status
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 Sie Certbot aus und erhalten Ihre Zertifikate.

Schritt 4 – Ein SSL-Zertifikat beschaffen

Certbot bietet verschiedene Möglichkeiten, SSL-Zertifikate über Plugins zu beziehen. Das Nginx-Plugin konfiguriert Nginx neu und lädt die Konfiguration bei Bedarf neu. Um dieses Plugin zu verwenden, führen Sie folgenden Befehl aus:

sudo certbot --nginx -d your_domain -d your_domain

Hierbei wird certbot mit der Erweiterung -nginx ausgeführt und -d verwendet, um die Namen anzugeben, 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 den Nutzungsbedingungen zuzustimmen. Anschließend kontaktiert certbot den Let's Encrypt-Server, um ein Zertifikat für Ihre Domain anzufordern. Im Erfolgsfall erhalten Sie folgende Ausgabe:

Output
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-01-27.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain
Successfully deployed certificate for www.your_domain to /etc/nginx/sites-enabled/your_domain
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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. Laden Sie Ihre Website anschließend über https:// neu und achten Sie auf die Sicherheitsanzeige Ihres Browsers. Diese sollte – üblicherweise mit einem grünen Schlosssymbol – anzeigen, dass die Website ordnungsgemäß gesichert ist. Wenn Sie Ihren Server mit dem Servertest von SSL Labs prüfen, erhält er die Bestnote A.

Nachdem Sie nun Ihr SSL-Zertifikat erhalten haben, besteht der letzte Schritt darin, den Verlängerungsprozess zu testen.

Schritt 5 – Certbot-Verifizierung der automatischen Verlängerung

Let's Encrypt-Zertifikate sind nur 90 Tage gültig. Dies soll Nutzer dazu anregen, die Zertifikatserneuerung zu automatisieren. Das installierte certbot-Paket übernimmt dies, indem es ein Erneuerungsskript in die Datei `/etc/cron.d` einfügt. Dieses Skript wird zweimal täglich ausgeführt und erneuert automatisch alle Zertifikate, deren Gültigkeit in den nächsten 30 Tagen abläuft.

Um den Erneuerungsprozess zu testen, können Sie einen Probelauf mit certbot durchführen:

sudo certbot renew --dry-run

Wenn keine Fehlermeldung erscheint, ist alles eingerichtet. Falls nötig, erneuert Certbot Ihre Zertifikate und lädt Nginx neu, um die Änderungen zu übernehmen. Sollte die automatische Erneuerung fehlschlagen, benachrichtigt Sie Let's Encrypt per E-Mail an die von Ihnen angegebene Adresse, sobald Ihr Zertifikat abläuft.

Ergebnis

In diesem Tutorial haben Sie den Let's Encrypt-Client Certbot installiert, SSL-Zertifikate für Ihre Domain heruntergeladen, Nginx für die Verwendung dieser Zertifikate konfiguriert und die automatische Zertifikatserneuerung eingerichtet. Bei weiteren Fragen zur Verwendung von Certbot ist die Dokumentation ein guter Ausgangspunkt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen