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:
-
Ein Debian 10-Server, der durch Befolgen dieser https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 Konfigurierung des ersten Servers für Debian 10] zusammen mit einem `+ eingerichtet wurde sudo + `Nicht-Root-Benutzer und eine Firewall.
-
Ein vollständig registrierter Domainname. Sie können einen Domain-Namen unter https://namecheap.com [Namecheap] erwerben, einen kostenlosen unter Freenom erhalten oder den Domain-Registrar Ihrer Wahl verwenden .
-
Die beiden folgenden DNS-Einträge wurden für Ihren Server eingerichtet. Weitere Informationen zum Hinzufügen von DNS finden Sie unter diese Einführung in DigitalOcean DNS.
-
Ein A-Datensatz mit "++", der auf die öffentliche IP-Adresse Ihres Servers verweist.
-
Ein A-Eintrag mit "+ www. +" Verweist auf die öffentliche IP-Adresse Ihres Servers.
-
Nginx wird unter Installation von Nginx unter Debian 10 installiert. Stellen Sie sicher, dass Sie einen https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10#step-5-%E2%80%93-setting-up-server haben -blocks [Serverblock] für deine Domain. In diesem Tutorial wird als Beispiel "+ / etc / nginx / sites-available / +" verwendet.
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.