TLS

Inzwischen sollte sich bei fast allen herumgesprochen haben, dass es sowas wie TLS Verschlüsselung gibt (oft nicht ganz richtig als SSL bezeichnet). Früher war das ja vor allem was für Banken, wenn man Online Banking machen wollte, heute gehört es fast zum Standard. Das sieht man auch sehr gut daran, dass Browser inzwischen Seiten, die kein TLS anbieten, entsprechend markiert, z.B. mit einem durchgestrichenen Schloss in der Adresszeile. Die Hersteller haben angekündigt, dies in Zukunft auszuweiten, so dass man sogar eine Fehlermeldung bekommen wird und nicht nur, wenn man im Begriff ist, etwas einzugeben.

Deshalb ist fukz.de jetzt auch via TLS (https) erreichbar. Ja, war es schon früher, allerdings mit selbst erstellten Zertifikaten. Das erzeugt im Browser aber eine Fehlermeldung, die vermutlich 99% aller Besucher verwirren wird. Ich habe jetzt Zertifikate von Let’s Encrypt erstellt und auf den Webserver gepackt. Die werden von den meisten Browsern akzeptiert. Sie haben einen kleinen Nachteil, sie sind immer nur für 90 Tage gültig. Es gibt eine Reihe von Scripten und Tools, die sich darum kümmern, dass die Zertifikate regelmäßig erneuert werden. Ob man sowas möchte, muss jeder für sich selbst entscheiden, ich bin da nicht so ein großer Freund von. Außerdem haben die Scripte auf dem Server keinen Zugriff auf die Konfiguration, weshalb ein automatisches Aktualisieren sowieso nicht klappt. Ich muss bei meinem Provider die Zertifikate per Webinterface hinterlegen. Fällt also aus. Damit es trotzdem funktioniert, lasse ich die Scripte auf einem Laptop laufen. Die Zertifikate von Let’s Encrypt sind lediglich Domain validiert. Das bedeutet, dass sie nur bestätigen, dass die Domain für die sie ausgestellt wurden, auch im Zugriff des Ausstellers liegt. Das ich derjenige bin, für den ich mich ausgebe, wird nicht bestätigt. Das genügt aber für einen Blog auf jeden Fall.

Damit die Domain verifiziert werden kann, verlangt Let’s Encrypt, dass ich eine bestimmte Verzeichnisstruktur mit einer bestimmten Datei auf den Webserver lege. Das manuell zu machen ist für mehrere Domains sehr aufwendig. Deshalb mounte ich mir den Webserver per sshfs auf den Laptop und das Script rennt einfach durch. Für die Erstellung der Zertifikate nutze ich Certbot, das von Let’s Encrypt empfohlen wird. Da meine Webseite unter verschiedenen Domains erreichbar ist und das keine Fehler liefern soll, ist es notwendig, ein Zertifikat für mehrere Domains anzulegen. Ich empfehle dafür eine Config Datei zu verwenden, sonst wird die Liste der Kommandozeilen Parameter lang:

config-dir = ./conf/ 
work-dir = ./work/ 
logs-dir = ./log/ 
email = certbot@fukz.de 
webroot-map = {"fukz.de,www.fukz.de,fukz.org,www.fukz.org":"mount/mywebroot/"}

Über den Parameter “webroot-map” wird festgelegt, auf welches Verzeichnis die Domains zeigen und wo Certbot die Datei anlegen soll. Das ist also der Mountpoint für sshfs. Der Rest ist eher “Standard”. Der passende Aufruf sieht dann so aus:

$ certbot certonly -v -n -t –webroot -c fukz_de.conf

Anschließend liegen die Zertifikate und Keys im Verzeichnis conf/live/fukz.de/ und können benutzt werden. In spätestens 90 Tagen dann das gleiche Spiel.