elan ev logo
elan ev logo
Contact sales

Lego und die Gründe für den Wechsel von Certbot

Lego and Certbot sind beides ACME Clients. ACME, also Automatic Certificate Management Environment, ist ein Protokoll, mit dem vereinfacht gesagt Zertifikate automatisiert ausgestellt werden können.

Schwarzes Bild mit den Wörtern: lego vs. certbot. Ergänzung ACME Client mit Pfeil auf das Wort "lego"

Um ein Zertifikat für eine Domain zu bekommen, stellt ein ACME Client zunächst eine Anfrage bei einer Zertifizierungsstelle wie Let’s Encrypt. Damit aber nicht irgendjemand einfach ein Zertifikat für fremde Webseiten bekommen kann, muss der Client beweisen, dass ihm die Domain wirklich gehört. Dazu stellt die Zertifizierungsstelle eine sogenannte „Challenge“. Wird diese erfüllt, so wird das Zertifikat ausgestellt. Der ACME Client kümmert sich anschließend darum, das Zertifikat regelmäßig zu erneuern.

Was steckt hinter den Challenges?

Die HTTP-01 Challenge

Eine häufige Challenge-Variante ist die HTTP-01 Challenge. Dabei sagt die Zertifizierungsstelle im Grunde: „Wenn dir die Domain gehört, dann beweise es.“ Konkret bedeutet das: Man bekommt einen zufällig generierten Code mit der Anweisung diesen unter einem festgelegten URL Pfad deiner Domain abrufbar zu machen. Zum Beispiel soll die Datei unter einem Pfad wie http://deinedomain/.well-known/acme-challenge/... öffentlich erreichbar sein. Kurze Zeit später prüft die Zertifizierungsstelle den Inhalt. Entspricht er der Vorgabe, so gilt es als bewiesen, dass der Webserver und somit auch die Domain unter der Kontrolle des Antragsstellers ist. Das Zertifikat darf damit ausgestellt werden.

Die DNS-01 Challenge

Eine alternative Methode ist die DNS-01 Challenge. Sie funktioniert vom Prinzip her ähnlich wie die HTTP-Challenge, nur dass hier keine Datei auf dem Webserver abgelegt wird, sondern ein spezieller DNS-Eintrag erstellt wird. Die Zertifizierungsstelle fordert einen bestimmten Wert als sogenannten TXT-Record in den DNS-Einstellungen deiner Domain zu hinterlegen. Dieser Eintrag ist für Nutzer unsichtbar, kann aber von außen abgefragt werden. Anschließend prüft die Zertifizierungsstelle den DNS-Eintrag deiner Domain. Eine Übereinstimmung mit der Vorgabe beweist den Besitz der Domain und das Zertifikat wird für diese ausgestellt. Diese Methode gilt in gewisser Weise als „stärker“, weil dafür der Zugriff auf den DNS-Provider der Domain benötigt wird.

Was hat das alles mit dem elan e.V. zu tun?

Der elan e.V. unterstützt Hochschulen beim Betrieb von Opencast, LMS und anderen Diensten. Eine typische Opencast Installation besteht aus mehreren Servern. Sie übernehmen jeweils spezifische Aufgaben. Opencast Admin und Presentation Server betreiben Dienste, die von Endnutzern oder externen Anwendungen angesprochen werden. Wohingegen Opencast Worker Videoverarbeitung übernehmen und nur von Opencast selbst mit Aufgaben versorgt werden. Darum laufen Worker bevorzugt in internen Netzwerken, hinter Firewalls oder in isolierten Umgebungen. Eine HTTP-Challenge ist dann nicht immer möglich.

Certbot und warum wir es ersetzt haben

Certbot ist ein weit verbreiteter ACME-Client. Das Projekt gibt es schon seit vielen Jahren und es hat sich dadurch als eine Art Standardlösung etabliert. Es werden viele Betriebssysteme unterstützt und Certbot ist in den Paketquellen (Repositories) gängiger Linux-Distributionen enthalten. In Umgebungen, wo hauptsächlich Linux-Server eingesetzt werden, lässt sich Certbot dadurch sehr einfach installieren und nutzen. Oft reicht ein einziger Befehl. Wenn man jedoch eine DNS-Challenge verwenden möchte, wird es etwas komplizierter. Certbot muss dafür mit dem jeweiligen DNS-Provider sprechen. Die Anbieter bieten in der Regel eine eigene API an um DNS Einträge zu setzen. Certbot löst das Problem mit einem Plugin System. Es gibt Certbot Plugins für unterschiedliche DNS-Provider. Sie werden von einer großen Community erstellt und gepflegt. Nicht jedes Plugin schafft es aber in die Standard-Repositories. Dadurch wird eine manuelle Nachinstallation nötig, die aufwendig ist und sich bedingt gut automatisieren lässt.

Die Vorteile vom Lego-Client gegenüber Certbot

Lego ist ein ACME-Client, ähnlich wie Certbot, mit dem man automatisiert TLS-Zertifikate z.B. von Let’s Encrypt beziehen und erneuern kann. Der große Unterschied liegt vor allem in der technischen Umsetzung und Handhabung. Lego ist in der Programmiersprache Go geschrieben. Typisch für Go ist, dass am Ende eine einzelne ausführbare Datei (Binary) entsteht. Das bedeutet: Das gesamte Programm steckt in genau einer Datei, die man einfach herunterladen und ausführen kann. Das macht die Installation und Wartung sehr unkompliziert. Anstatt viele Abhängigkeiten zu installieren oder Pakete zu verwalten, reicht es aus, diese eine Datei auszutauschen, um auf eine neue Version zu aktualisieren. Ein besonders großer Vorteil von Lego liegt im Umgang mit DNS-Providern. Bei Lego sind nahezu alle gängigen DNS-Provider direkt integriert. Diese Unterstützung ist bereits Teil der Binary, sodass man keinen zusätzlichen Installationsaufwand hat. Das heißt konkret: Man wählt einfach den gewünschten DNS-Provider aus der Liste aus, konfiguriert die Zugangsdaten, und kann sofort die DNS-Challenge nutzen. Dadurch wird die Nutzung deutlich einfacher und auch besser automatisierbar. Gerade in größeren Umgebungen zahlt sich das aus, weil Installation, Konfiguration und Wartung sehr schlank bleiben. Zusammen mit der guten Dokumentation und der klaren Bedienung war das für uns ein entscheidender Grund, auf Lego umzustellen.

Porträt Waldemar
Autor: Waldemar Smirnow