Skip to content

Zertifikate mit Let's Encrypt

Dass man Webdienste heutzutage nur noch per https anspricht und damit verschlüsselt kommuniziert, ist hinlänglich bekannt. Um jedoch zu gewährleisten, dass man auch tatsächlich mit der richtigen Gegenstelle kommuniziert und die verschlüsselten Daten auch dort ankommen, wo sie sollen, gibt es digitale Zertifikate. In LogoDIDACT wird dafür Let’s Encrypt als Zertifizierungsstelle genutzt, die Ende 2015 in Betrieb gegangen ist und kostenlose X.509-Zertifikate für Transport Layer Security (TLS) anbietet. Dabei ersetzt ein automatisierter Prozess die bisher gängigen komplexen händischen Vorgänge bei der Erstellung, Validierung, Signierung, Einrichtung und Erneuerung von Zertifikaten für verschlüsselte Websites.

Let's Encrypt aktivieren

Für Let's Encrypt gibt es keinen separaten Container, da letztlich nur ein Zertifikat generiert und zentral bereitgestellt wird. Da der Puppeteer die zentrale Managementkomponente ist, wird Let's Encrypt in diesem Container konfiguriert.

Zunächst wechselt man in den Container puppeteer-g3 in das LogoDIDACT-Konfigurationsverzeichnis. Erstellen Sie darin die Datei puppeteer-g3.yaml oder ergänzen Sie den nachfolgen Inhalt in die bestehende Datei.

root@puppeteer-g3:~/l/hiera/custom.d # vi puppeteer-g3.yaml

puppeteer-g3.yaml
1
2
3
ld_acme::client: 'acme.sh'
ld_acme::ensure: present
ld_acme::mail: 'mail@firma.de'

Im Anschluss die Anpassung wie gewohnt in GIT commiten.

root@puppeteer-g3:~/l/hiera/custom.d # git add puppeteer-g3.yaml
root@puppeteer-g3:~/l/hiera/custom.d # git commit -m "Aktivierung von Let's Encrypt"

Zertifikate verwalten

Im Zusammenhang mit der Installation der Pakete wird im puppeteer-g3 eine Skripting-Umgebung eingerichtet, die über den "Benutzer" sle gestartet wird.

Nach Eingabe des sle-Kommandos kann mit dem folgenden Befehl ein LE-Zertifikat für einen Webdienst beantragt werden:

le-acme@puppeteer-g3:~ $ issue webservice.schulkuerzel.logoip.de

Das schulkuerzel ist hierbei der inviduell vergebene Name der Schule (Shortname), z.B. musterstadt-rs. Der vorangestellte webservice ist die Bezeichnung für den freizuschaltenden Dienst, z.B. idp.

Somit ergibt sich aus den Beispielangaben der Befehl:

le-acme@puppeteer-g3:~ $ issue idp.musterstadt-rs.logoip.de

Info

Falls die Beantragung des Zertifikates fehlschlägt, müssen unter Umständen noch die Webports 80/HTTP und 443/HTTPS in der Shorewall des ldhost geöffnet werden.

Außerdem vergewissern, dass diese beiden genannten TCP-Ports am vorgeschalteten Internetrouter auf die Schnittstelle p_extern des LogoDIDACT Servers weitergeleitet werden!

Ausgestellte Zertifikate landen automatisch durch prun in den Rev-Proxys rproxy-ext und rproxy-int im Verzeichnis /etc/ld.le/. Der dort laufende Proxy-Dienst haproxy weißt diese SSL-Zertifikate anhand einer Mapping-Datei dem jeweiligen URL bzw. Dienst zu:

root@rproxy-int:~ # /etc/haproxy/map.d/crt-list

Eine Übersicht aller ausgestellten LE-Zertifikate erhält man mit:

le-acme@puppeteer-g3:~ $ acme.sh --list

Das Entfernen eines Zertfikates ist möglich per:

le-acme@puppeteer-g3:~ $ acme.sh --remove -d webservice.schulkuerzel.logoip.de

Warnung

Durch diesen Befehl wird lediglich das Zertifikat aus der Liste der bekannten Zertifikate entfernt, nicht jedoch die Zertifikatsdateien (config, keys, etc.) selbst. Diese müssen manuell gelöscht werden unter certs/webservice.schulkuerzel.logoip.de/*

Zertifikate aktualisieren

Ein Let's Encrypt Zertifikat hat eine Gültigkeitsdauer von 60 Tagen und muss deshalb regelmäßig erneuert werden. Das geschieht über einen entsprechenden Dienst acmesh.timer automatisch. Trotzdem ist es nicht ausgeschlossen, dass diverse Umstände den Automatismus zu Erneuerung der Zertifikate unterbrechen. Ist dies der Fall kann die Erneuerung manuell erfolgen.

le-acme@puppeteer-g3:~ $ acme.sh --renew -d webservice.schulkuerzel.logoip.de