SSL-Zertifikat mit Let's Encrypt erstellen

SSL-Zertifikat mit Let’s Encrypt erstellen

Mit Let’s Encrypt lassen sich nun seit gut einem Monat kostenlose Zertifikate für jederman erstellen. Seit 3. Dezember 2015 befindet sich das Projekt in einer Public Beta Phase und ist nach einem Monat 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.

SSL-Zertifikat von Let’s Encrypt automatisch erstellen

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/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help

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

Apache:

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-Mailadresse 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

4 Gedanken zu „SSL-Zertifikat mit Let’s Encrypt erstellen“

  1. 1.) Funktioniert das nur wenn die Domain aus dem Internet erreichbar ist

    2.) wird das so wie hier beschrieben nicht funktionieren wenn 1 nicht zutrifft. Geht auch nicht mit DynDNS

    1. Hallo Max,
      leider erschließt sich mir nicht, ob du Fragen hast oder ob dies Aussagen sind.
      Let’s Encrypt kann nur für eine Domain eingerichtet werden, wenn man selber Zugriff auf diese hat. Bei den meisten DynDNS-Anbietern bekommt man zwar seine eigene Subdomain, auf die sich das Let’s Encrypt Zertifikat theoretisch anwenden lässt, allerdings wird dies aufgrund eines Limits von Zertifikaten auf eine SLDomain, beschränkt. Somit sollte bei den meisten Anbietern das Erstellen eines eigenen Let’s Encrypt Zertifikats nicht oder nur schwer möglich sein. Sobald man im Besitz einer eigenen Domain ist, kann diese allerdings auch für Let’s Encrypt + DynDNS verwendet werden.

      Gruß
      Willy

  2. „Dabei muss allerdings sichergestellt sein, dass beim Verlängern keine Interaktion nötig ist.“ Wie kann man das verhindern? Ich werde gefragt „How would you like to authenticate with the ACME CA? (How would you like to authenticate with the ACME CA? (apache, webroot oder standalone). Gibt es da eine Lösung?

    Danke im Voraus!

    intux

    1. Hallo intux, wieso willst du das verhindern? Es ist doch sicher am besten, dass ein Automatismus die Zertifikate verlängert. In dem Fall würde ich auf „standalone“ gehen. Das sollte dann wie beim Erstellen der Zertifikate temporär einen pythonbasierten Webserver öffnen und deine Domäne validieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert