Einführung
Jede Website, die Besucher anziehen möchte, muss eine SSL/TLS-Verschlüsselung für ihre Domain enthalten. SSL/TLS-Zertifikate gewährleisten eine sichere Verbindung zwischen Ihrem Webserver und Browsern.
Let’s Encrypt ist eine kostenlose Zertifizierungsstelle, mit der Sie einen solchen Schutz einrichten können. Dies ist der einfachste Weg, Ihren Nginx-Server zu sichern.
In diesem Artikel finden Sie die einfachste Möglichkeit, Ihren Nginx-Server zu sichern, indem Sie Let’s Encrypt-Zertifikate mit der Certbot-Software erhalten.
Voraussetzungen
- Ein System, auf dem Ubuntu 20.04 (oder Ubuntu 18.04) ausgeführt wird
- Zugriff auf ein Terminalfenster/eine Befehlszeile
- Sudo oder root Privilegien auf lokalen/entfernten Rechnern
- Nginx installiert und eingerichtet
- Ein registrierter Domainname
- Ein für diesen Domainnamen konfigurierter Serverblock
So sichern Sie Nginx mit Let's Encrypt auf Ubuntu 20.04
Schritt 1:Certbot installieren
Certbot ist ein Open-Source-Softwaretool zum automatischen Aktivieren von HTTPS mithilfe von Let’s Encrypt-Zertifikaten.
Der erste Schritt zur Sicherung von Nginx mit Let’s Encrypt ist die Installation von Certbot. Öffnen Sie dazu zunächst ein Terminalfenster und aktualisieren Sie das lokale Repository:
sudo apt update
Laden Sie dann Certbot und sein Nginx-Plugin herunter und installieren Sie es, indem Sie Folgendes ausführen:
sudo apt install certbot python3-certbot-nginx
Geben Sie y
ein Bestätigen Sie die Installation und drücken Sie die Eingabetaste.
Schritt 2:Überprüfen Sie die Nginx-Konfiguration
Wie in den Voraussetzungen erwähnt, sollten Sie bereits über eine registrierte Domain und einen Nginx-Serverblock für diese Domain verfügen. Als Beispiel verwendet dieser Artikel die Domain example.com .
Um zu überprüfen, ob es richtig eingerichtet ist, öffnen Sie die Nginx-Konfigurationsdatei:
sudo nano /etc/nginx/sites-available/example.com
Suchen Sie dann server_name
Direktive und vergewissern Sie sich, dass sie auf Ihren Domainnamen eingestellt ist. Da Sie den Domainnamen mit und ohne www. einfügen möchten Präfix, sollte die Zeile wie folgt aussehen:
server_name example.com www.example.com;
Schritt 3:Passen Sie die Firewall an, um HTTPS-Datenverkehr zuzulassen
Der nächste Schritt besteht darin, die Firewall so anzupassen, dass sie HTTPS-Verkehr zulässt.
Wenn Sie der Nginx-Installationsanleitung gefolgt sind, haben Sie Ihre Firewall bereits aktiviert, um Nginx HTTP zuzulassen. Während Sie Let’s Encrypt-Zertifikate hinzufügen, müssen Sie die Firewall für verschlüsselten Datenverkehr konfigurieren.
1. Um sicherzustellen, dass Ihre Firewall aktiv ist und HTTPS-Datenverkehr zulässt, führen Sie den folgenden Befehl aus:
sudo ufw status
Die Ausgabe sollte Ihnen mitteilen, dass UFW aktiv ist, und Ihnen eine Liste festgelegter Regeln geben. Im folgenden Beispiel wird gezeigt, dass die Firewall Nginx-HTTP-Verkehr zulässt, aber kein HTTPS.
Nginx hat drei (3) Profile, die Sie als Regeln hinzufügen können:
- Nginx-HTTP (öffnet Port 80)
- Nginx-HTTPS (öffnet Port 443 – verschlüsselter Datenverkehr)
- Nginx voll (öffnet Port 80 und 443)
2. Um verschlüsselten Datenverkehr zuzulassen, können Sie entweder Nginx HTTPS hinzufügen Profil oder verwenden Sie Nginx Full und löschen Sie die vorhandene Nginx-HTTP-Regel:
a) Erlauben Sie Nginx-HTTPS-Datenverkehr, indem Sie den folgenden Befehl ausführen:
sudo ufw allow 'Nginx HTTPS'
b) Entfernen Sie Nginx HTTP und verwenden Sie stattdessen Nginx Full mit:
sudo ufw deny 'Nginx HTTP'
sudo ufw allow 'Nginx Full'
3. Überprüfen Sie, ob Sie eine Regel hinzugefügt haben, die HTTPS-Datenverkehr zulässt, indem Sie den ufw status
verwenden Befehl.
Schritt 4:Erhalten Sie das SSL/TLS-Zertifikat
Das Plugin von Nginx für Certbot konfiguriert Nginx neu und lädt seine Konfiguration bei Bedarf neu. Daher müssen Sie lediglich Zertifikate mit dem NGINX-Plug-in generieren.
1. Führen Sie dazu den folgenden Befehl aus:
sudo certbot --nginx -d example.com -d www.example.com
2. Die Ausgabe fordert Sie auf, Ihre HTTPS-Einstellungen zu konfigurieren. Geben Sie Ihre E-Mail-Adresse ein und stimmen Sie den Nutzungsbedingungen zu, um fortzufahren.
3. Sobald Sie HTTPS konfiguriert haben, schließt Certbot die Generierung des Zertifikats ab und lädt Nginx mit den neuen Einstellungen neu.
4. Schließlich zeigt die Ausgabe an, dass Sie erfolgreich ein Zertifikat generiert haben, und gibt den Speicherort des Zertifikats auf Ihrem Server an.
Schritt 5:Automatische Zertifikatserneuerung aktivieren
Da Let’s Encrypt-Zertifikate alle 90 Tage ablaufen, empfiehlt Nginx, einen Cron-Job einzurichten und automatisch zu verlängern.
1. Öffnen Sie zunächst die crontab-Konfigurationsdatei für den aktuellen Benutzer:
crontab -e
2. Fügen Sie einen Cron-Job hinzu, der den certbot
ausführt Befehl, der das Zertifikat erneuert, wenn er feststellt, dass das Zertifikat innerhalb von 30 Tagen abläuft. Planen Sie es so, dass es täglich zu einer bestimmten Zeit ausgeführt wird (in diesem Beispiel um 05:00 Uhr):
0 5 * * * /usr/bin/certbot renew --quiet
Der Cron-Job sollte auch den --quiet
enthalten -Attribut, wie im obigen Befehl. Dies weist certbot an, nach der Ausführung der Aufgabe keine Ausgabe einzuschließen.
3. Nachdem Sie den Cron-Job hinzugefügt haben, speichern Sie die Änderungen und beenden Sie die Datei.