So sichern Sie Nginx mit Let’s Encrypt unter Debian 10

Einführung

Let’s Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), mit der Sie auf einfache Weise kostenlose https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and herunterladen und installieren können -csrs [TLS / SSL-Zertifikate], wodurch verschlüsseltes HTTPS auf Webservern aktiviert wird. 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 auf Apache und Nginx vollständig automatisiert.

In diesem Tutorial verwenden Sie Certbot, um ein kostenloses SSL-Zertifikat für Nginx unter Debian 10 zu erhalten und Ihr Zertifikat für die automatische Verlängerung einzurichten.

In diesem Lernprogramm wird anstelle der Standarddatei eine separate Nginx-Serverblockdatei verwendet. Wir empfehlen Erstellen neuer Nginx-Server-Blockdateien für jede Domäne, da hierdurch häufige Fehler vermieden werden und die Standarddateien als Fallback-Konfiguration beibehalten werden.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Schritt 1 - Installation von Certbot

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

Durch die Installation des https://packages.debian.org/buster/python3-certbot-nginx [+ python3-certbot-nginx + - Pakets] aus den Debian-Repositories können wir Cerbots https: //certbot.eff installieren und verwenden. org / docs / using.html # nginx [nginx plugin]. Die Arbeit mit Python 3 und dem Paket + python3-certbot-nginx + verlängert die Lebensdauer unseres Setups: Python 2 wird bis Januar 2020 unter deprecated veröffentlicht Daher stellt unser Setup die Kompatibilität mit Python 3 sicher. Debian 10 unterstützt derzeit sowohl Python 2 als auch Python 3.

Aktualisieren Sie Ihre Paketliste, bevor Sie das Paket + python3-certbot-nginx + installieren:

sudo apt update

Installieren Sie als Nächstes die Abhängigkeiten für das Paket "+ python3-certbot-nginx ", einschließlich " python3-acme ", " python3-certbot ", " python3-mock ", " python3-openssl ", " python3-pkg-resources + , + python3-pyparsing + und + python3-zope.interface + `:

sudo apt install python3-acme python3-certbot python3-mock python3-openssl python3-pkg-resources python3-pyparsing python3-zope.interface

Zum Schluss installieren Sie das Paket + python3-certbot-nginx +:

sudo apt install python3-certbot-nginx

Certbot ist jetzt einsatzbereit, aber damit SSL für Nginx konfiguriert werden kann, müssen wir einige Einstellungen von Nginx überprüfen.

Schritt 2 - Bestätigen der Nginx-Konfiguration

Certbot muss in der Lage sein, den richtigen "+ server " - Block in Ihrer Nginx-Konfiguration zu finden, damit SSL automatisch konfiguriert werden kann. Dies geschieht insbesondere, indem nach einer Anweisung " Servername +" gesucht wird, die Ihrer angeforderten Domain entspricht.

Wenn Sie den https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10#step-5-%E2%80%93-setting-up-server-blocks gefolgt sind [Schritt zum Einrichten des Serverblocks im Nginx-Installations-Tutorial], Sie sollten einen Serverblock für Ihre Domain unter "+ / etc / nginx / sites-available / " haben, wobei die Direktive " Servername +" bereits entsprechend eingestellt ist.

Öffnen Sie zur Überprüfung die Serverblockdatei für Ihre Domain mit + nano + oder Ihrem bevorzugten Texteditor:

sudo nano /etc/nginx/sites-available/

Suchen Sie die vorhandene Zeile "+ Servername +". Es sollte so aussehen:

/ etc / nginx / sites-available / your_domain

...
server_name  www.;
...

Wenn dies der Fall ist, schließen Sie Ihren Editor und fahren Sie mit dem nächsten Schritt fort.

Wenn dies nicht der Fall ist, aktualisieren Sie es entsprechend. Speichern Sie dann die Datei, beenden Sie Ihren Editor und überprüfen Sie die Syntax Ihrer Konfigurationsänderungen:

sudo nginx -t

Wenn Sie eine Fehlermeldung erhalten, öffnen Sie die Serverblockdatei erneut und suchen Sie nach Tippfehlern oder fehlenden Zeichen. Wenn Ihre Konfigurationsdateisyntax korrekt ist, laden Sie Nginx neu, um die neue Konfiguration zu laden:

sudo systemctl reload nginx

Certbot kann nun den richtigen "+ server +" Block finden und aktualisieren.

Als Nächstes aktualisieren wir die Firewall, um HTTPS-Verkehr zuzulassen.

Schritt 3 - Ermöglichen von HTTPS durch die Firewall

Wenn Sie die Firewall "+ ufw +" aktiviert haben, wie in den Handbüchern zu den Voraussetzungen empfohlen, müssen Sie die Einstellungen anpassen, um HTTPS-Datenverkehr zuzulassen.

Sie können die aktuelle Einstellung anzeigen, indem Sie Folgendes eingeben:

sudo ufw status

Es wird wahrscheinlich so aussehen, was bedeutet, dass nur HTTP-Verkehr zum Webserver erlaubt ist:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Wenn Sie HTTPS-Datenverkehr zulassen möchten, lassen Sie das Profil "+ Nginx Full " zu und löschen Sie das redundante Profil " Nginx HTTP +":

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

Ihr Status sollte jetzt so 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)

Lassen Sie uns als Nächstes Certbot ausführen und unsere Zertifikate abrufen.

Schritt 4 - Beziehen eines SSL-Zertifikats

Certbot bietet eine Vielzahl von Möglichkeiten, SSL-Zertifikate über Plugins abzurufen. Das Nginx-Plugin kümmert sich darum, Nginx neu zu konfigurieren und die Konfiguration bei Bedarf neu zu laden. Geben Sie Folgendes ein, um dieses Plugin zu verwenden:

sudo certbot --nginx -d  -d

Dies führt "+ certbot " mit dem Plugin " - nginx " aus und verwendet " -d +", 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 kommuniziert + certbot + mit dem Let’s Encrypt-Server und führt eine Abfrage durch, um zu überprüfen, ob Sie die Domäne steuern, für die Sie ein Zertifikat anfordern.

Wenn dies erfolgreich ist, werden Sie von "+ certbot +" gefragt, 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):

Wählen Sie Ihre Wahl und drücken Sie "+ ENTER". Die Konfiguration wird aktualisiert und Nginx wird neu geladen, um die neuen Einstellungen zu übernehmen. + certbot + wird mit einer Meldung abgeschlossen, die besagt, dass der Vorgang erfolgreich war und wo Ihre Zertifikate gespeichert sind:

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2019-10-08. 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"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- 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 die Sicherheitsanzeige Ihres Browsers. Es sollte anzeigen, dass die Site ordnungsgemäß gesichert ist, normalerweise mit einem grünen Schlosssymbol. Wenn Sie Ihren Server mit dem SSL Labs-Servertest testen, erhält er die Note * A *.

Zum Abschluss testen wir den Erneuerungsprozess.

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

Let´s Encrypt-Zertifikate sind nur neunzig Tage gültig. Dies soll Benutzer dazu ermutigen, ihren Zertifikaterneuerungsprozess zu automatisieren. Das von uns installierte "+ certbot " - Paket kümmert sich darum, indem es ein Erneuerungsskript zu " / etc / cron.d +" hinzufügt. Dieses Skript wird zweimal täglich ausgeführt und erneuert automatisch alle Zertifikate, die innerhalb von 30 Tagen nach dem Ablaufdatum vorliegen.

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 die automatische Erneuerung jemals fehlschlägt, sendet Let’s Encrypt eine Nachricht an die von Ihnen angegebene E-Mail-Adresse und warnt Sie, wenn Ihr Zertifikat in Kürze abläuft.

Fazit

In diesem Lernprogramm 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. Wenn Sie weitere Fragen zur Verwendung von Certbot haben, ist Ihre Dokumentation ein guter Ausgangspunkt.