igorclauss.de open_in_new

Ubuntu 18.04 - SSL Verschlüsselung für Nginx mit Let's encrypt

Einleitung

Es sollte heutzutage kaum noch Websites ohne verschlüsseltes Protokoll geben. Mit Hilfe von certbot können wir kinderleicht Zertifikate für unsere Websites, egal ob der Webserver nun Apache oder Nginx heißt, erstellen und von Let's Enctrypt zertifizieren lassen. In dieser Anleitung gehen wir den Arbeitsprozess dafür Schritt für Schritt durch.

Diese Anleitung beschreibt in Kurzform und ohne Schnick-Schnack nur die nötigsten Schritte für die Einrichtung von SSL Zertifikaten mit Let's Encrypt und dient vor allem als Ressource für mich selbst. Wer eine ausführlichere Anleitung, mit Erklärungen sucht, kann diese englische Anleitung aus einem Digitalocean Handbuch lesen.

Vorraussetzungen

Was du für diese Anleitung brauchst, ist ein Nicht-Root-Benutzer mit sudo-Rechten. Wie man diesen erstellt kannst du in der Anleitung zur Erstinstallation des Ubuntu 18.04 Servers nachlesen.

Ebenso benötigst du einen Ubuntu Server mit eingerichteter Firewall, dafür kannst du diese Anleitung nutzen.

Nginx sollte als Webserver bereits instaliert sein, wie das funktioniert habe ich in dieser Anleitung beschrieben.

In der Nginx Konfiguration sollten bereits für alle Websites, deren Verbindung wir verschlüsseln wollen, Serverblöcke mit entsprechenden server_name eingerichtet sein.

Desweiteren sollten die DNS Einträge für die Domains, für die wir eine verschlüsselte Verbindung einrichten gesetzt sein.

Anleitung — Certbot Installieren

Wir beginnen damit, dass wir Certbot, also die Software, die die ganze Arbeit für uns erledigt, auf dem Server installieren.

Mit dem folgenden Befehl fügen wir das aktuelle Repository zum Verzeichnis auf Ubuntu hinzu. Gegebenenfalls müssen wir diesen Schritt mit einer Eingabe bestätigen.

sudo add-apt-repository ppa:certbot/certbot

Im nächsten Schritt erledigen wir zwei Dinge auf einmal. Zum einen Aktualisieren wir die Package-Liste auf Ubuntu, zum anderen installieren wir das das Package python-certbot-nginx.

sudo apt-get update && sudo apt-get install python-certbot-nginx

Anleitung — Anpassung der UFW Firewall

Wenn du meinen letzten Anleitungen gefolgt bist, dann haben wir eine Firewall mit dem Service UFW eingerichtet. Diesen müssen wir nun anpassen, damit HTTPS Verbindungen unseren Server erreichen können.

Die jetzigen Einstellungen können wir mit folgender Eingabe anzeigen lassen:

sudo ufw status
Status: active

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

Oben siehst du ein Beispiel Output. Nun müssen wir Nginx nicht nur HTTP Verbindungen, sondern auch HTTPS Verbindungen erlauben. Da dies sämtliche Rechte, die Nginx zur Verfügung stehen beinhalten würde, löschen wir nachfolgend die Rechte für HTTP Verbindungen und geben Nginx volle Zugriffsrechte.

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

Danach sollte eine erneute Statusabfrage in etwa Folgendes zurückgeben:

sudo ufw status
Status: active

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

Anleitung — Erstellung der SSL Zertifikate mit Cdertbot

Da wir nun alles eingerichtet haben, um unsere Websites verschlüsselt auszuliefern, können wir die Zertifikate von Let's Encrypt beantragen. Dabei erledigt certbot fast die ganze Konfiguration von Nginx für uns.

Wir geben lediglich folgenden Befehl in die Konsole ein. Dabei ersetzt du natürlich für deinen Server und deine Websites die Domains, für die du ein Zertifikat beantragst. Logisch.

sudo certbot --nginx -d igorclauss.de -d www.igorclauss.de -d blog.igorclauss.de -d www.blog.igorclauss.de

Den Rest erldigt certbot für uns. Es erstellt eine Ordnerstruktur, in der alle Zertifikate mit Schlüsseln zu finden sind, es konfiguriert Nginx und fügt sogar ( falls ausgewählt) eine Weiterleitung von HTTP zu HTTPS Verbindungen ein. Bei der ersten Nutzung von certbot werden einige Kontaktdaten abgefragt, die für den Antrag eines Zertifikats notwendig sind und wir müssen den Nutzungsbedingen zustimmen.

Wenn alles geklappt hat und alle angefragten Domains auch laut DNS-Einträgen uns gehören, also auf diesen Server verweisen, sehen wir folgende Ausgabe:

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

Wie vorhin erwähnt, können wir hier wählen, ob wir die besagte Weiterleitung wünschen. Egal, wie wir uns entscheiden, wir sehen bei erfolgter Einrichtung folgenden Output:

IMPORTANT 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

Damit ist die Einrichtung komplett und wir können unsere Website mit den Prefix https:// erreichen.

Nächste Schritte

  • Einrichtung eines Cronjobs zur Erneuerung der Zertifikate vor dem Ablauf
  • HTTP/ 2.0 Protokoll installieren

Einen Kommentar posten

Kommentare zu diesem Beitrag