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