Let's Encrypt revolutioniert mit kostenlosen Zertifikaten.

Mit Let’s Encrypt lassen sich nun seit gut über einem Jahr kostenlose Zertifikate für jedermann erstellen.

Let's Encrypt revolutioniert mit kostenlosen Zertifikaten.
Mit Let’s Encrypt lassen sich nun seit gut über einem Jahr kostenlose Zertifikate für jederman erstellen.

Mit Let’s Encrypt lassen sich nun seit gut über einem Jahr kostenlose Zertifikate für jederman erstellen. Seit 3. Dezember 2015 befindet sich das Projekt in einer Public Beta-Phase und ist bereits die fünftgrößte CA weltweit. Das Projekt hat sich zur Aufgabe gesetzt, verschlüsselte HTTPS-Verbindungen im Internet zum Standard zu machen. Bereits jetzt werden von Let’s Encrypt signierte Zertifikate in allen modernen, gängigen Browsern und Betriebssystemen akzeptiert.

Es gibt verschiedene Möglichkeiten Let's Encrypt zu nutzen. Wie das bereits in einer Kurzform funktioniert habe ich bereits in der folgenden Installationsanleitung (Collabora Online Server mit Nextcloud auf Ubuntu 16.04 TLS, Installationsanleitung) beschrieben. Viele Wege führen schließlich nach Rom.

Wie man SSL-Zertifikate von Let's Encrypt automatisch erstellt, erkläre ich euch jetzt.

Zum Signieren von Zertifikaten mit Let’s Encrypt gibt es mehrere Möglichkeiten. So bietet Let’s Encrypt selbst einen eigenen Client bzw. eigenes ACME. Daneben gibt es aber noch andere Clients / ACME zum Signieren der Zertifikate. Im Folgenden wird ein Zertifikat automatisiert mit dem offiziellen Let’s Encrypt ACME erstellt und signiert. Leider lädt das Tool einiges an Paketen nach und erfordert root-Rechte. Zudem muss der eigene Webserver für die Zeit des Erstellens heruntergefahren werden. Denn nur unter dieser Voraussetzung kann der Client einen eigenen kleinen Webserver starten und die Domaininhaberschaft validieren.

Zur offiziellen Kurzanleitung. Eine ausführliche Anleitung ist auf readthedocs.org zu finden.

Voraussetzung für die Installation ist Git. Git und der Let’s Encrypt ACME Client können so heruntergeladen und vollständig installiert werden:

sudo apt-get install git
cd /opt
sudo git clone https://github.com/certbot/certbot
cd certbot
./letsencrypt-auto --help

Bei der automatisierten Erstellung von signierten Zertifikaten muss zudem der Webserver gestoppt werden.

Apache2:

sudo /etc/init.d/apache2 stop

Nginx:

sudo /etc/init.d/nginx stop

Nun kann das Zertifikat automatisiert erstellt werden.

./letsencrypt-auto certonly --standalone -d domain.de -d www.domain.de

Dabei gibt "certonly"  an, dass kein Webserver zu konfigurieren ist und wir nur das Zertifikat erstellen möchten. "--standalone" gibt an, dass temporär ein Webserver zur Validierung der Domain gestartet werden kann und soll (dazu darf also nichts Port 80 und 443 blockieren / benutzen). Mit "-d" gibt man die Domain an, für die das Zertifikat gültig ist – jede Weitere wird dabei zu den alternativen Namen aufgenommen und anerkannt (sofern die Validierung erfolgreich ist).

Beim Aufruf des Clients muss eine E-Mail-Adresse hinterlegt und den Nutzungsbedingungen zugestimmt werden. Ersteres dient der Kontaktaufnahme bei Sicherheitsproblemen und Verlängerung des Zertifikates. Der ganze Vorgang kann bis zu einer halben Stunde dauern. Danach liegen diese Dateien unter "/etc/letsencrypt/live/domain.de/":

  • cert.pem: Server Zertifikat
  • chain.pem: Intermediate Zertifikat
  • fullchain.pem: cert.pem + chain.pem
  • privkey.pem: Privater Schlüssel

Um diese Zertifikate zum Betrieb mit HTTPS zu nutzen, müssen diese im Webserver hinterlegt bzw. konfiguriert werden.

Für Apache Webserver (unter Debian-basiertem OS) bietet Let’s Encrypt sogar eine vollautomatisierte Möglichkeit, Zertifikate zu erstellen und diese gleich im Webserver zu konfigurieren.

./letsencrypt-auto --apache

SSL-Zertifikat verlängern

Bei den signierten Zertifikaten ist zu beachten, dass diese nur 90 Tage gültig sind. Gründe dafür nennt das Let’s Encrypt Projekt in einem Blog-Eintrag. Dazu zählen Sicherheitsvorteile durch kurze Laufzeiten und die allgemeine Verbreitung solcher Laufzeiten. Unzufriedenheit und hohe Aufwände möchte das Projekt mit einem hohen Grad an Automation bei der Verlängerung lösen.

Verlängern lässt sich das Zertifikat über diesen Befehl. Dabei muss auch wieder der Webserver gestoppt werden:

/opt/letsencrypt/letsencrypt-auto certonly --renew-by-default -d domain.de www.domain.de

Die regelmäßige Verlängerung kann über einen Cronjob automatisiert werden. Dabei muss allerdings sichergestellt sein, dass beim Verlängern keine Interaktion nötig ist.

SSL-Zertifikat widerrufen

Die ausgestellten Zertifikate können auch widerrufen werden.

/opt/letsencrypt/letsencrypt-auto revoke --cert-path /etc/letsencrypt/live/domain.de/fullchain.pem

Finish. :)