Let’s Encrypt Zertifikate „schmerzfrei“ verwalten

Im letzten Jahr hat der frei zugängliche Service „Let’s Encrypt“ es nicht nur aus der Beta-Phase geschafft, sondern fast sofort eine weit verbreitete Unterstützer-Basis gefunden. Das Projekt wurde von der Electronic Frontier Foundation (EFF) 2014 gestartet und hat eine einzigen Hauptzweck:

Das Schützen der Privatsphäre von Internet-NutzerInnen

Warum Privatsphäre, Let’s Encrypt?

Für eine Transport Layer Security-Verschlüsselung (TLS, oft am „https://“ erkennbar) braucht man vor allem eines, ein „trusted“ Zertifikat. Solche Zertifikate sind schon lange verfügbar, allerdings sind sie mit Kosten verbunden, die für kleine oder interne Projekte oftmals nicht vertretbar sind. Auch der Prozess der Erstellung und Validierung eines Zertifikates übersteigt oft die Fähigkeiten von Einsteiger-BenutzerInnen von Web-Technologien.

Häufig wird daher auf den Einsatz von Zertifikaten verzichtet oder es werden selbst-signierte Zertifikate eingesetzt. Beides führt in der Regel dazu, das Sicherheitswarnungen in Browsern angezeigt werden.

Let’s Encrypt greift genau bei diesen Problemstellen ein. Sie haben mit ihrem Service einen voll-automatisierten Zertifikatsaussteller geschaffen der Zertifikate nicht nur kostenlos, sondern – nach entsprechendem Setup – automatisiert und unmittelbar ausgestellt.

Das ist schön und gut, aber wo ist der Haken?

Die „Haken“ an den Zertifikaten von Let’s Encrypt sind, dass diese immer nur mit beschränkter Gültigkeit (aktuell 90 Tage) und in limitierter Anzahl (dzt. 20 Zertifikate pro Domain pro Woche, mit einigen Ausnahmen) ausgestellt bzw. erneuert werden können. Dies bringt folgende Probleme mit sich:

  • Die Verwaltung mehrerer Zertifikate wird unübersichtlich: Wann laufen sie ab? Welche Zertifikate sind überhaupt verfügbar?
  • Ist das Kontingent ausgeschöpft, können keine neuen Zertifikate mehr anfordert werden: Wann können neue Zertifikate erstellt und bestehende erneuert werden?
  • Das Ausstellen und Erneuern von Zertifikaten muss auch lokal automatisiert werden.

Nachdem wir den Einsatz von Let’s Encrypt Zertifikaten seit Öffnung der Beta-Phase bei uns immer weiter intensiviert haben, sind wir mit diesen Einschränkungen immer wieder konfrontiert gewesen. Wir haben daher damit begonnen eine praktikable Lösung zur Verwaltung unserer Let’s Encrypt Zertifikate zu entwickeln.

Unser Let’s Encrypt Wrapper ward geboren …

Der Let’s Encrypt Wrapper adressiert die oben angeführten Punkte und automatisiert die Ausstellung der Zertifikate. Er stellt sicher, dass

  • eine Vielzahl von Let’s Encrypt Zertifikaten verwaltet werden können,
  • die Zertifikate automatisch erneuert werden (wenn diese demnächst ablaufen) und
  • die von Let’s Encrypt festgelegten Beschränkungen eingehalten werden.

Das von uns entwickelte Tool ist beliebig konfigurierbar und somit für unterschiedliche Einsatzzwecke anpassbar. Über die Konfigurationsdateien lassen sich mehrere Domains und Subdomains (mit und ohne Alias-Domains) verwalten. Das Tool ist darauf ausgelegt die Konfiguration nur bei Bedarf zu bearbeiten (z.B. um eine neues Zertifikat für eine Domain einzufügen), zu testen und dann automatisiert, zum Beispiel als wöchentlicher Cronjob, laufen zu lassen.

Nachdem wir den Wrapper bereits seit geraumer Zeit erfolgreich einsetzen, haben wir ihn nun auf GitHub als Open Source Projekt unter der Creative Commons Lizenz CC-BY-NC-SA 3.0 verfügbar gemacht: Let’s Encrypt Wrapper (Dokumentation auf Englisch).

So können Interessierte das Tool nutzen, sich an der Entwicklung des Tools beteiligen, ihre eigenen Ideen und Wünsche einbringen und Verbesserungen vorschlagen.

Gibt es Alternativen …

Ja klar! Let’s Encrypt und die EFF haben ein sehr umfangreiches Script geschrieben um Zertifikate auszustellen und zu erneuern: den certbot. Dieser kann Server-Konfiguration direkt bearbeiten und Zertifikate autonom, dh. ohne Server, ausstellen. Der certbot bietet eine Vielzahl von Features und ist sehr mächtig, damit aber auch nicht mehr ganz einfach zu handhaben. Für unsere Zwecke wollten wir daher eine schlankere Lösung.

Natürlich gibt es mittlerweile eine Vielzahl von anderen Tools und Scripts die ähnliche Ziele verfolgen. Hier gilt es ein für den Anwendungszweck bzw. die Infrastruktur passendes Projekt zu finden.

tl;dr

Let’s Encrypt erlaubt also kostenlose Zertifikatsausstellung und unser Let’s Encrypt Wrapper bietet dazu noch automatische Erneuerung, Auslesen der Zertifikate, Multi-Domain-Zertifikatserstellung, E-Mail-Benachrichtigung und das Verwalten von beliebig vielen Domains/Zertifikaten. Das Python 2.7 Skript kann erweitert und an die eigenen Anforderungen angepasst werden. Außerdem lässt es sich auf zahlreichen Plattformen virtualisiert oder direkt auf dem System verwenden.