Was ist Let´s Encrypt? 

Vor dem Start des Projektes gab es nur sehr wenige Zertifizierungsstellen, bei denen kostenlose SSL-Zertifikate beantragt werden konnten. Die kommerziellen Anbieter wie Thawte, Geotrust oder Symantec verlangen für ein einfaches domainvalidiertes Zertifikat zwischen zwei und fünf Euro monatlich. Müssen dann mehrere (Sub-)Domains vom Zertifikat abgedeckt werden, entstehen schnell hohe Kosten.

Überprüft wird von LE nur die Domain, nicht aber wer der genaue Inhaber der Domain ist bzw. ob es die Firma gibt. Die Zertifikate haben damit die gleiche Qualität wie die jeweils kostengünstigsten Zertifikate der kommerziellen Anbieter.

Das Projekt hat sich aus diesem Grund zum Ziel genommen, kostenlose SSL-Zertifikate für jedermann auszustellen und zudem in jedem modernen Browser als gültig erkannt und innerhalb weniger Sekunden beantragt werden können. Durch die immer größer werdende Bedeutung von HTTPS startete das Projekt Ende 2015 deshalb sehr erfolgreich in eine öffentliche Betatest-Phase. Bis März 2016 wurden schon über eine Million Zertifikate über LE ausgestellt. Im April 2016 ging das Projekt dann in den offiziellen Regelbetrieb über.

Wie funktioniert Let´s Encrypt?

Für die Ausstellung von gültigen domainvalidierten SSL-Zertifikaten wird in der Regel zwingend eine Zertifizierungsstelle, die den Besitz einer (Sub-)Domain überprüfen kann, gebraucht. Nur so kann verhindert werden, dass sich Fremde Zertifikate für Domains ausstellen, die ihnen überhaupt nicht gehören. Im Hintergrund mussten also verschiedene Überprüfungen stattfinden, die bisher aber nur manuell bzw. teilautomatisiert (z.B. über eine Bestätigungs-E-Mail an den Webmaster) vorgenommen wurden. Mithilfe des Protokolls ACME, welches ebenfalls vom LE-Projekt entwickelt wurde, besteht nun die Möglichkeit, Domains komplett automatisiert zu überprüfen. Dieser Prozess geschieht innerhalb von wenigen Sekunden.

Im Hintergrund erstellt der ACME-Client eine Zertifikatsanfrage und schickt diese an den ACME-Server. Zur Bestätigung des Domainbesitzes müssen in einem bestimmten Unterverzeichnis des Webservers Dateien mit einem bestimmten Inhalt hinterlegt werden (Challenge-Dateien). Der ACME-Server überprüft daraufhin, ob die Dateien unter den jeweiligen Domains erreichbar sind und der Inhalt korrekt ist. Wenn das der Fall ist, ist der Domainbesitz bestätigt und die Zertifikate werden ausgestellt.

Alternativ bietet LE auch noch die Validierung über DNS-Einträge an, was aber sehr aufwendig ist und nur in Ausnahmefällen benutzt werden sollte.

Automatische Verlängerung der Zertifikate

Der ACME-Client kann Zertifikate komplett automatisiert beantragen und verlängern. Meistens wird die erste Beantragung des Zertifikats manuell ausgeführt, da in diesem Schritt auch noch Änderungen an den Webserverkonfigurationen vorgenommen werden. Die Verlängerung kann jedoch bequem über einen Cronjob auf dem System mit dem Webserver erledigt werden.

Wie oft muss eine Verlängerung durchgeführt werden?

Die Zertifikate von LE haben eine Gültigkeit von 90 Tagen ab Datum der Ausstellung. Alle ACME-Clients führen erst eine Verlängerung durch, wenn das Zertifikat in weniger als 30 Tagen abläuft. Eine tägliche Verlängerung wäre zwar möglich, würde aber keinen Sinn machen und es kann passieren, dass man beim ACME-Server aufgrund der hohen Zahl an Anfragen blockiert wird.

Was passiert bei einem Fehler während der Verlängerung?

Gibt es einen Fehler bei der Verlängerung, bleibt das alte Zertifikat weiterhin gültig. Der Cronjob unternimmt dann beim nächsten Durchlauf einen erneuten Versuch. Standardmäßig läuft der Cronjob wöchentlich, meistens montags. Richten wir auf einem Server Zertifikate von LE ein, werden einige davon auch gleich in unsere Überwachung aufgenommen. Die Überwachung informiert uns wöchentlich über Zertifikate, deren Ablauf in weniger als 30 Tagen stattfindet. So würden wir auch auf einen nicht funktionierenden Cronjob hingewiesen werden.

Was ist bei den V-Hosts zu beachten?

Damit die Beantragung bzw. automatische Verlängerung durch den ACME-Client funktionieren kann, muss im Webserver ein globaler Alias für das Verzeichnis mit den Challenge-Dateien angelegt werden. Der ACME-Client legt pro Domain, für die er konfiguriert ist, eine Challenge in dieses Verzeichnis und ruft es nach folgendem Schema ab:

http://www.example.org/.well-known/acme-challenge/tgyNm5WMyNrsz6ngljCm1Rp7tJOZfMmb0A1F8KvGOKk

Um sensible Bereiche mit Passwortschutz zur Validierung der Zertifikate nicht komplett freischalten zu müssen, gibt es zusätzlich einige Parameter, die HTTP Basic-Auth im Apache verzeichnisspezifisch deaktivieren. Zuletzt können auch Rewrite-Regeln dafür sorgen, dass der globale Alias nicht wie gewünscht funktioniert. Auch dafür gibt es eine entsprechende Konfiguration zum Deaktivieren von mod_rewrite für die ACME-Challenges.