Mittlerweile haben sich auf meinem Server einige Domains und Subdomains angesammelt. Und spätestens seit ich die meisten Dienste über Docker-Container bereitstelle ist meine Nginx-Konfiguration relativ üppig geworden.

Vor einiger Zeit habe ich mir daher ein Ansible-Playbook erstellt, welches mir die Konfiguration etwas vereinfacht.

Wo ich schonmal dabei war an den SSL-Zertifikaten zu schrauben habe ich gleich noch HSTS angeknipst. HSTS zwingt den Browser, für eine gewisse Zeit, nur noch HTTPS-Verbindungen zu einem Server/einer Domain herzustellen und verhindert so bestimmte Formen von Man-in-the-middle-Angriffen.

Ich weiß nicht, wie oft ich schon Mails von Bloglesern erhalten habe, mein SSL-Zertifikat sei abgelaufen und ich sollte es doch endlich mal erneuern. Nicht dass mir mein Monitoring das nicht rechtzeitig gesagt hätte, auch https://startssl.com hat mir immer rechtzeitig eine entsprechende Info geschickt. Aber Zertifikatupdates sind einfach umständlich und doof.

Um so erfreuter war ich, als https://letsencrypt.org sich anschickte hier Abhilfe zu schaffen. Doch der Betatest brachte einige Ernüchterung. Der Standard-Client brachte nicht nur zahlreiche Dependencies und damit überraschend viel Komplexität mit sich, er wollte außerdem auf genau den Ports laufen, die mein Webserver belegt. Das manuelle Verfahren, welches zumindest die letztgenannte Einschränkung nicht mit sich brachte war leider nicht sauber automatisierbar, da es ständig irgendwelche Rückfragen stellte.

Abhilfe schaffte hier [[https://github.com/lukas2511/letsencrypt.sh|letsencrypt.sh]]. Es benötigt lediglich sed und curl, beides ist sowieso installiert. Das eigentliche Script ist in Bash geschrieben und deutlich überschaubarer als der letsencrypt-Standard-Client. Der einzige Nachteil, die Apache-Konfiguration muss ich weiterhin selbst übernehmen, doch das hatte der letsencrypt-Client auch nicht sauber hinbekommen.