Let’s Encrypt: Public Beta – Seit 3. Dezember kann nun jeder kostenlose Zertifikate erstellen – Update

Bislang war Let’s Encrypt nur mit Warteliste bzw. mit Einladung für einen beschränkten Benutzerkreis verfügbar. Seit heute kann nun jeder den Dienst nutzen und sich selbst kostenlose Zertifikate erstellen lassen. Was Let’s Encrypt ist wurde bereits dem Artikel „Beta Phase für gratis SSL Zertifikate von Let’s Encrypt “ beschrieben. Nun soll es darum gehen erste Zertifikate zu erstellen.

Allgemein

Die automatische Zertifikats-Erstellung wird über ein neues Protokoll abgewickelt. Dieses wurden von Let’s Encrypt, nicht ganz ohne Augenzwinkern, „ACME“ genannt und übernimmt die Kommunikation mit dem Let’s Encrypt CA Server. Den dazu gehörigen Client  können wir ganz leicht auf unserem Linux Server installieren. Dieser übernimmt bei Bedarf neben der Zertifikats-Anforderung auch die Installation bei unserem Webserver. Clients für andere Betriebssysteme sollen bald folgen.

Let’s Encrypt Zertifikate sind immer nur 90 Tage gültig. Daher sollten diese unbedingt automatisch erneuert werden um abgelaufene Zertifikate zu vermeiden.

Allgemeine Informationen zu Let’s Encrypt finden sich unter anderem bei Caschys Blog, Golem und Heise.

Let’s Encrypt Client installieren

Den Client kann man sich bequem über Github herunterladen. Ggf. ist dafür vorher die Installation von git auf dem Server erforderlich. Stand dieses Eintrags ist dies die Version 0.5.0.

Der letsencrypt Client verwendet selbst Python. Beim ersten Aufruf versucht dieser aber die notwändigen Programme selbst nachinstallieren. Unter Ubuntu klappt dies problemlos.

Eine Liste aller verfügbaren Optionen erhält mit mit dem Parameter –help all.

Die verschieden Methoden um Zertifikate zu erstellen

Der Let’s Encrypt Client kann die Zertifikate über verschiedene Methoden bestätigen und beziehen. Entweder über ein Apache PlugIn, als Standalone-Server oder über eine Datei im DocumentRoot des Servers. Für den Standalone Betrieb muß der eigentliche Webserver kurzzeitig beendet werden.  Bei den anderen Methoden wird der Betrieb dagegen nicht unterbrochen. Die Zertifikate werden in einem /etc/letsencrypt Ordner gespeichert. Zusätzlich fragt der Client nach einer E-Mail Adresse um Zertifikate bei Datenverlust wiederherstellen zu können.

Vollautomatischer Modus

Ruft man den Client ohne Parameter auf, versucht dieser die Art Webservers und dessen konfigurierte Domains zu erkennen und bietet eine Auswahl an der Domains für die Zertifikate installiert werden sollen.

Bei ab vom Standard konfigurierten Servern könnte dies jedoch fehlschlagen. Ein Backup der Konfiguration wäre hier vorher ratsam.

Installation mit Dateien im DocumentRoot

In diesem Modus erstellt der Client Dateien im DocumentRoot der Domain und lässt diese vom CA Server abrufen und überprüfen. Dies entspricht am ehesten der bislang üblichen Vorgehensweise für domain-validierte Zertifikate. Probleme können entstehen wenn die Webseite z.B. Rewrites verwendet um Suchmaschinen freundliche URLs zu erstellen. Hier kann es passieren dass die Dateien dann nicht direkt abrufbar sind und das Zertifikat nicht validiert werden kann.

Mit certonly sagen wir dem Client er soll die Zertifikate nicht gleich installieren. Und die Dateien im webroot (DocumentRoot) der Domain domain.tld ablegen. Ggf. kann der Client das Verzeichnis nicht ermitteln dann müsste mit –webroot-path=/var/www/… nachgeholfen werden.

Das Zertifikate findet sich dann unter /etc/letsencrypt/live/domain.tld/.. Auf dieselbe Weise wurde übrigens das Zertifikat für diesen Blog erstellt. Der Nachteil hierbei ist natürlich dass wegen certonly die Zertifikate nur im Livesystem landen. Die Einrichtung muss manuell erfolgen und das zusätzlich noch alle 90 Tage denn länger sind die Zertifikate nicht gültig.

Zertifikate für mehrere Domains und Sub-Domains.

Es ist auch möglich ein Zertifikat für mehrere Domains zu erstellen.

Verwendung des Standalone modus

Um gar nicht erst Probleme mit der Konfiguration diverses Webserver und Webseiten zu riskieren lässt sich letsencrypt auch im Standalone-Modus betreiben. Dann simuliert der Client einen Webserver und validiert so das Zertifikat. Hier ein Beispiel:

Dabei muss Port 80 auf dem Server frei sein also vorhandene Webserver kurzzeitig herunter gefahren werden.

Resultat:

Zertifikate automatisch erneuern

Da die Zertifikate nur 90 Tage gültig sind macht es wenig Sinn diese manuell immer wieder zu erneuern. Der letsencrypt Client kann dabei helfen diese automatisch zu erledigen. Dabei ist es auch kein Problem die Zertifikate z.B. jeden Monat zu verlängern.

Hier wird auf Seiten von Let’s Encrypt noch gearbeitet. Der Client speichert schon alle wichtigen Daten der Erstellung. Somit könnte ein letsencrypt-auto -d domain.tld eigentlich ausreichen. Aktuell wird man aber an der Konsole gefragt ob man erneuern oder abbrechen will. Verwendet man den Parameter –renew-by-default wird zwar automatisch erneuert also nicht extra gefragt. Jedoch verwendet der Client dann nicht mehr die Einstellung vom letzten mal.

Somit ist aktuell der Weg per cronjob denselben Aufruf wie bei der Erstellung ergänzt durch ein –renew-by-default auszuführen. Ggf. bei standalone davor den Apache bzw NginX noch zu beenden und am Ende neu zu starten.

Bei Multi-Domain/ISP Servern ist das aktuelle Limit von 10 Zertifikaten pro Tag ggf. auch ein Problem. Im Let’s Encrypt Forum gibt es schon erste Scripte die erst prüfen wie lange Zertifikate noch gültig sind. Diese laufen dann jeden Tag und falls ein Zertifikat ansteht wird es erneuert. Diese sind aber noch unausgereift.

Einfaches Let’s Encrypt renewal Script

Es folgt eine kleine PHP Datei die vorhandene Let’s Encrypt Zertifikate sucht überprüft und bei baldigem Ablauf verlängert. Aktuell geht das Script davon aus das die Verlängerung immer klappt. Wegen dem Limit an Anfragen pro Tag und IP kann dies beim Testen schon mal schief gehen. Auch werden nur die Zertifikate erneuert und nichts an der Konfiguration geändert.

Falls standalone Zertifikate erneuert werden wird der Apache vorher beendet und am Schluss wieder gestartet.

 

Kommentar verfassen