How To Setup Lassen Sie uns mit Nginx Server Blocks unter Ubuntu 16.04 verschlüsseln

Einführung

Let's Encrypt ist eine Zertifizierungsstelle (Certificate Authority, CA), die eine einfache Möglichkeit bietet, kostenloseTLS/SSL certificates zu erhalten und zu installieren, 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 Ubuntu 16.04 zu erhalten und Ihr Zertifikat für die automatische Verlängerung einzurichten.

In diesem Lernprogramm wird anstelle der Standarddatei eine separate Nginx-Serverblockdatei verwendet. We recommenderstellt neue Nginx-Serverblockdateien für jede Domäne, da dies dazu beiträgt, einige häufige Fehler zu vermeiden und die Standarddateien wie vorgesehen als Fallback-Konfiguration beibehalten. Wenn Sie SSL mit dem Standardserverblock einrichten möchten, können Sie stattdessenthis Nginx + Let’s Encrypt tutorial folgen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein Ubuntu 16.04-Server, der gemäß diesem Tutorial voninitial server setup for Ubuntu 16.04eingerichtet wurde, einschließlich eines Sudo-Nicht-Root-Benutzers und einer Firewall.

  • Ein vollständig registrierter Domainname. In diesem Tutorial werden durchgehendexample.com verwendet. Sie können einen Domain-Namen fürNamecheap kaufen, einen fürFreenom kostenlos erhalten oder den Domain-Registrar Ihrer Wahl verwenden.

  • Die beiden folgenden DNS-Einträge wurden für Ihren Server eingerichtet. Sie könnenthis hostname tutorial folgen, um Details zum Hinzufügen zu erhalten.

    • Ein A-Datensatz mitexample.com, der auf die öffentliche IP-Adresse Ihres Servers verweist.

    • Ein A-Datensatz mitwww.example.com, der auf die öffentliche IP-Adresse Ihres Servers verweist.

  • Nginx wird installiert, indemHow To Install Nginx on Ubuntu 16.04 befolgt wird.

  • Eine separate Nginx-Serverblockdatei für Ihre Domain, die mit den folgendenthis Nginx server blocks tutorial for Ubuntu 16.04 eingerichtet wurde. In diesem Tutorial werden/etc/nginx/sites-available/example.com verwendet.

[[Schritt-1 - Installieren von Certbot]] == Schritt 1 - Installieren 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.

Certbot befindet sich in einer sehr aktiven Entwicklung, daher sind die von Ubuntu bereitgestellten Certbot-Pakete in der Regel veraltet. Die Certbot-Entwickler unterhalten jedoch ein Ubuntu-Software-Repository mit aktuellen Versionen, sodass wir stattdessen dieses Repository verwenden.

Fügen Sie zunächst das Repository hinzu.

sudo add-apt-repository ppa:certbot/certbot

Sie müssenENTER drücken, um zu akzeptieren. Aktualisieren Sie anschließend die Paketliste, um die Paketinformationen des neuen Repositorys abzurufen.

sudo apt-get update

Installieren Sie schließlich das Nginx-Paket von Certbot mitapt-get.

sudo apt-get install python-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ätigung der Nginx-39-s-Konfiguration]] == Schritt 2 - Bestätigung der Nginx-Konfiguration

Certbot muss in der Lage sein, den richtigenserver-Block in Ihrer Nginx-Konfiguration zu finden, damit SSL automatisch konfiguriert werden kann. Dies geschieht insbesondere, indem nach einerserver_name-Richtlinie gesucht wird, die der Domäne entspricht, für die Sie ein Zertifikat anfordern.

Wenn Sie das vorausgesetzte Lernprogramm fürNginx server blocks befolgt haben, sollten Sie einen Serverblock für Ihre Domain bei/etc/nginx/sites-available/example.com haben, wobei die Direktiveserver_name bereits entsprechend festgelegt ist.

Öffnen Sie zur Überprüfung die Serverblockdatei für Ihre Domain mitnano oder Ihrem bevorzugten Texteditor.

sudo nano /etc/nginx/sites-available/example.com

Suchen Sie die vorhandeneserver_name-Zeile. Es sollte so aussehen:

/etc/nginx/sites-available/example.com

. . .
server_name example.com www.example.com;
. . .

In diesem Fall können Sie den Editor beenden und mit dem nächsten Schritt fortfahren.

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 die Syntax Ihrer Konfigurationsdatei korrekt ist, laden Sie Nginx neu, um die neue Konfiguration zu laden.

sudo systemctl reload nginx

Certbot kann nun den richtigenserver-Block finden und aktualisieren.

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

[[Schritt-3 -—- Zulassen von https-durch-die-Firewall]] == Schritt 3 - Zulassen von HTTPS durch die Firewall

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

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)

Um zusätzlich HTTPS-Verkehr zuzulassen, können wir das vollständige Nginx-Profil zulassen und dann die redundante Nginx-HTTP-Profilzulassung löschen:

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)

Jetzt können wir Certbot ausführen und unsere Zertifikate abrufen.

[[Schritt-4 -—- Erhalten eines SSL-Zertifikats]] == Schritt 4 - Erhalten eines SSL-Zertifikats

Certbot bietet eine Vielzahl von Möglichkeiten, SSL-Zertifikate über verschiedene Plugins zu erhalten. Das Nginx-Plugin kümmert sich um die Neukonfiguration von Nginx und das erneute Laden der Konfiguration, wann immer dies erforderlich ist:

sudo certbot --nginx -d example.com -d www.example.com

Dadurch wirdcertbot mit dem Plugin--nginx ausgeführt, wobei-d verwendet wird, um die Namen anzugeben, für die das Zertifikat gültig sein soll.

Wenn Siecertbot zum ersten Mal ausführen, werden Sie aufgefordert, eine E-Mail-Adresse einzugeben und den Nutzungsbedingungen zuzustimmen. Danach kommuniziertcertbot mit dem Let's Encrypt-Server und führt dann eine Herausforderung aus, um zu überprüfen, ob Sie die Domäne steuern, für die Sie ein Zertifikat anfordern.

Wenn dies erfolgreich ist, werden Sie voncertbotgefragt, 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 SieENTER. Die Konfiguration wird aktualisiert und Nginx wird neu geladen, um die neuen Einstellungen zu übernehmen. certbot wird mit einer Nachricht abgeschlossen, die Ihnen mitteilt, dass der Prozess erfolgreich war und wo Ihre Zertifikate gespeichert sind:

OutputIMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
   expire on 2017-10-23. 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. Laden Sie Ihre Website mithttps:// neu 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 mitSSL Labs Server Testtesten, erhält er die NoteA.

Zum Abschluss testen wir den Erneuerungsprozess.

[[Schritt 5 - Überprüfung der automatischen Erneuerung von Certbot]] == Schritt 5 - Überprüfung 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 Paketcertbot erledigt dies für uns, indem es/etc/cron.d ein Erneuerungsskript 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 einen Trockenlauf mitcertbot 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-Clientcertbot 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, isttheir documentation ein guter Ausgangspunkt.