So sichern Sie Nginx mit Let’s Encrypt unter Ubuntu 14.04

Einführung

Let's Encrypt ist eine neue Zertifizierungsstelle (Certificate Authority, CA), mit der auf einfache Weise kostenlose TLS / SSL-Zertifikate abgerufen und installiert werden können, wodurch verschlüsseltes HTTPS auf Webservern ermöglicht 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 Vorgang zum Abrufen und Installieren eines Zertifikats sowohl auf Apache- als auch auf Nginx-Webservern vollständig automatisiert.

In diesem Tutorial zeigen wir Ihnen, wie Sie mit Certbot ein kostenloses SSL-Zertifikat erhalten und mit Nginx unter Ubuntu 14.04 LTS verwenden können. Wir zeigen Ihnen auch, wie Sie Ihr SSL-Zertifikat automatisch erneuern können.

In diesem Lernprogramm wird anstelle einer separaten Serverblockdatei die Standardkonfigurationsdatei von Nginx 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 stattdessen mithilfe von Serverblöcken einrichten möchten, können Siethis Nginx server blocks with Let’s Encrypt tutorial folgen.

Voraussetzungen

Bevor Sie diesem Tutorial folgen, benötigen Sie einige Dinge.

  • Ein Ubuntu 14.04-Server mit einem Nicht-Root-Benutzer, der über die Berechtigungen vonsudoverfügt. Sie können lernen, wie Sie ein solches Benutzerkonto einrichten, indem Sie unsereninitial server setup for Ubuntu 14.04 tutorial folgen.

  • Nginx installiert,How To Install Nginx on Ubuntu 14.04 LTS

  • Sie müssen den registrierten Domainnamen besitzen oder kontrollieren, mit dem Sie das Zertifikat verwenden möchten. Wenn Sie noch keinen registrierten Domainnamen haben, können Sie einen bei einem der vielen Domainnamen-Registrare registrieren (z. Namecheap, GoDaddy usw.).

  • Ein DNSA Record, das Ihre Domain auf die öffentliche IP-Adresse Ihres Servers verweist. Sie könnenthis hostname tutorial folgen, um Details zum Hinzufügen zu erhalten. Dies ist erforderlich, da Let’s Encrypt überprüft, ob Sie die Domäne besitzen, für die ein Zertifikat ausgestellt wird. Wenn Sie beispielsweise ein Zertifikat fürexample.com erhalten möchten, muss diese Domäne auf Ihrem Server aufgelöst werden, damit der Validierungsprozess funktioniert. Unser Setup verwendetexample.com undwww.example.com als Domainnamen, alsoboth DNS records are required.

Nachdem Sie alle Voraussetzungen erfüllt haben, können Sie Certbot, die Let's Encrypt-Clientsoftware, installieren.

[[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, diecertbot-Software auf Ihrem Server zu installieren. Die Certbot-Entwickler unterhalten ein eigenes Ubuntu-Software-Repository mit aktuellen Versionen der Software. Da sich Certbot in einer so aktiven Entwicklung befindet, lohnt es sich, dieses Repository zu verwenden, um einen neueren Certbot als den von Ubuntu bereitgestellten zu installieren.

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

Und schließlich installieren Sie Certbot mitapt-get:

sudo apt-get install python-certbot-nginx

Dercertbot Let's Encrypt-Client ist jetzt einsatzbereit.

[[Schritt-2 - Einrichten von Nginx]] == Schritt 2 - Einrichten von Nginx

Certbot kann SSL für Nginx automatisch konfigurieren, muss jedoch in der Lage sein, den richtigenserver-Block in Ihrer Konfiguration zu finden. Dazu wird nach einerserver_name-Richtlinie gesucht, die der Domain entspricht, für die Sie ein Zertifikat anfordern. Wenn Sie mit einer neuen Nginx-Installation beginnen, können Sie die Standardkonfigurationsdatei aktualisieren:

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

Suchen Sie die vorhandeneserver_name-Zeile:

/etc/nginx/sites-available/default

server_name localhost;

Ersetzen Sielocalhost durch Ihren Domainnamen:

/etc/nginx/sites-available/default

server_name example.com www.example.com;

Speichern Sie die Datei und beenden Sie Ihren Editor. Überprüfen Sie die Syntax Ihrer Konfigurationsänderungen mit:

sudo nginx -t

Läuft dies fehlerfrei, laden Sie Nginx neu, um die neue Konfiguration zu laden:

sudo service nginx reload

Certbot kann nun den richtigenserver-Block finden und aktualisieren. Jetzt aktualisieren wir unsere Firewall, um HTTPS-Verkehr zuzulassen.

[[Schritt-3 -—- Erhalten eines SSL-Zertifikats]] == Schritt 3 - 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 jetzt heruntergeladen, installiert und konfiguriert. Laden Sie Ihre Website mithttps:// neu und beachten Sie die Sicherheitsanzeige Ihres Browsers. Dies sollte bedeuten, 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.

[[Schritt 4 - Überprüfung der automatischen Erneuerung von Certbot]] == Schritt 4 - Ü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 installiertecertbot-Paket erledigt dies für uns, indem es zweimal täglich über einen systemd-Timer "certbot erneuern" ausführt. Bei Nicht-Systemd-Distributionen wird diese Funktionalität durch ein in/etc/cron.d platziertes Skript bereitgestellt. Diese Aufgabe wird zweimal täglich ausgeführt und erneuert jedes Zertifikat, das innerhalb von 30 Tagen nach Ablauf der Gültigkeit abgelaufen ist.

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 Tutorial haben wir den Let's Encrypt-Clientcertbot installiert, SSL-Zertifikate für unsere 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.