Nginx-Webserver mit Let’s Encrypt unter Debian installieren

Let’s Encrypt ist eine Zertifizierungsstelle, die eine einfache Möglichkeit bietet, kostenlose TLS / SSL-Zertifikate zu erhalten und zu installieren, wodurch verschlüsselte HTTPS auf Webservern ermöglicht werden. Es vereinfacht den Prozess, indem ein eigener „Zertifzierungsbot“ (Cerbot), bereitgestellt wir und die meisten Schritte zum Erhalt der SSL Zertifikate automatisieren. In diesem Tutorial verwenden Sie de Certbot, um ein kostenloses SSL-Zertifikat für Nginx auf Ubuntu/Debian  zu erhalten, und konfigurieren den Dienst so, dass Ihr Zertifikat automatisch erneuert wird.

Voraussetzungen für Nginx mit Let’s Encrypt

Für dieses Tutorial benötigen Sie:

  • Einen Ubuntu- oder Debian-Server mit Root-Account
  • Eine registrierte Domain in unserem Tutorial verwenden wir die Domain example.com Falls Sie noch keine Domain haben, können Sie hier eine Domain zu günstigen Konditionen über uns erwerben.: www.serverkraut.de
  • Die folgenden DNS-Einträge sind im Voraus zu erledigen:
    • Einen A-Eintrag mit example.com, der auf die öffentliche IP-Adresse des Servers verweist
    • Einen A-Eintrag mit www.example.com, der auf die öffentliche IP-Adresse verweist (ein CNAME-Eintrag geht auch)
  • Nginx installiert nach unserem Tutorial: Wie installiere ich Nginx auf Ubuntu oder Debian?

 

Schritt 1 – Installieren von Certbot

Der erste Schritt zur Verwendung von Let’s Encrypt auf Ihrem Server ist die Installation der Certbot-Software.

Fügen Sie zuerst das Repository hinzu:

sudo add-apt-repository ppa:certbot/certbot

Sie müssen nach wenigen Augenblicken die Kommandozeilenausgabe mit ENTER bestätigen um fortzufahren. Danach lesen Sie die Paketlisten erneut ein:

sudo apt-get update

Schlussendlich installieren Sie mit apt-get die Certbot Software

sudo apt-get install python-certbot-nginx

Certbot ist nun einsatzbereit, aber bevor wir SSL für Nginx aktivieren können, müssen wir zunächst eine Änderung in der Nginx-Konfiguration durchführen.

Schritt 2 – Einrichten von Nginx

Certbot kann die SSL Konfiguration für Nginx automatisch anpassen, hierfür muss er aber in der Lage sein, den korrekten Serverblock in der Konfiguration finden. Bearbeiten Sie die Konfiguration und passen den server_name entsprechend der Domain an, für die ein Zertifikat erstellt werden soll.

Standardmäßig (nach einer frischen Installation) kann es ausreichen die Standardkonfigurationsdatei zu aktualisieren. Öffnen wir diese Datei mit dem Editor nano (oder einem beliebigen Editor nach Wahl):

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

Passen Sie den Servernamen entsprechend Ihrer Domain an:

Nun die Datei speichern und die Konfigurationsdatei auf etwaige Syntaxfehler überprüfen:

sudo nginx -t

Sollten Fehler auftauchen liegt ggf. ein Tippfehler vor. Nachdem die Konfiguration fehlerfrei ist laden wir die Einstellungen neu:

sudo systemctl reload nginx

Schritt 3 – Beziehen 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 bei Bedarf:

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

Wenn Sie certbot das erste 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 dann eine Abfrage aus, um zu überprüfen, ob Sie die Domäne steuern, für die Sie ein Zertifikat anfordern.

Anschließend werden Sie gefragt wie die https Einstellungen konfiguriert werden sollen:

Output
Please 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):

Im Regelfall sollte 2 die beste Wahl sein. Besucher der Seite http://example.com werden automatisch auf die sichere Version: https://example.com umgeleitet. Treffen Sie eine Wahl und bestätigen dies mit ENTER. Anschließend erhalten Sie eine Erfolgsmitteilung und den Speicherort der Zertifikatsdateien:

Output
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
   expire on 2018-01-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

Die Seite sollte nun ohne Browserwarnungen über https aufrufbar sein.

Schritt 4 – Aktivieren / überprüfen der automatischen Zertifikatsverlängerung

Let’s Encrypt-Zertifikate sind nur für 90 Tage gültig. Dies soll Benutzer dazu ermutigen, ihren Zertifikatserneuerungsprozess zu automatisieren. Das certbot-Paket, das wir installiert haben, erledigt dies für uns, indem wir ‚certbot renew‘ zweimal täglich über einen Systemd-Timer ausführen. Bei Nicht-Systemdistributionen wird diese Funktionalität von einem Skript in /etc/cron.d bereitgestellt. Diese Aufgabe wird zweimal täglich ausgeführt und erneuert jedes Zertifikat, das innerhalb von 30 Tagen abläuft.

Um die Verlängerung zu testen geben wir ein:

sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie fertig. Bei Bedarf erneuert Certbot Ihre Zertifikate und lädt die Nginx Einstellungen neu, um die Änderungen zu übernehmen. Wenn der automatische Erneuerungsprozess fehlschlägt, sendet Let’s Encrypt eine Nachricht an die von Ihnen angegebene E-Mail und warnt Sie, wenn Ihr Zertifikat bald abläuft.

1 Kommentar

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.