Bevor wir uns nun an die Absicherung unserer Verbindungen machen, müssen wir unserer Firewall verklickern, dass sie Zertifikate von Let’s Encrypt abrufen soll. Das dafür benötigte Paket heißt „os-acme-client“. Sobald das installiert ist, taucht der zugehörige Dienst als „ACME Client“ im Menü unter Dienste auf.

Als Erstes legen wir ein neues Konto an:

Hier tragen wir eine Email-Adresse ein und legen fest, welche Zertifikats-Autorität wir verwenden wollen. Für den ersten Test genügt die „Let’s Encrypt Test CA“ – falls irgendetwas schiefgeht, können wir unsere Konfiguration anpassen (das könnten wir auch, wenn wir die „richtige“ CA nutzen würden, aber da kann es passieren, dass wir bei einer falschen Konfiguration für ein paar Stunden gesperrt werden).  Was die Email-Adresse angeht, bietet es sich an, eine zu verwenden, auf die wir auch zugreifen können – Let’s Encrypt verschickt Mails, wenn die Zertifikate ablaufen. Unser Ziel ist zwar eine automatische Verlängerung, aber falls das mal nicht klappt, können wir auf die Mail reagieren und uns um die Verlängerung kümmern…

Weiter geht’s mit der Challenge; damit ist gemeint, wie Let’s Encrypt sicherstellen soll, dass wir die sind, für die wir uns ausgeben.

Möglich sind hier mehrere Arten – zwei von denen nutze ich selbst:

HTTP: Der CertBot (das ist die Softwarekomponente, die die Zertifikate abruft), erwartet eine Textdatei mit einem bestimmten Inhalt. Beim Abruf des Zertifikats wird ein Logfile erzeugt, in dem steht, wie die Textdatei heißen muss, wo sie liegen soll, und was drinstehen soll. Findet Let’s Encrypt die Datei auf unserem Webserver, wird davon ausgegangen, dass wir wirklich auch die Kontrolle über diesen Server haben, und wir erhalten ein Zertifikat.

DNS: Bei der DNS-Challenge wird dieser Teil automatisiert. Einige Webhoster bieten API-Schnittstellen an, über die sich automatisiert DNS-Einträge erzeugen lassen. Die Idee ist ähnlich der http-Challenge: Der CertBot authentifiziert sich gegenüber der DNS-API des Webhosters und legt einen txt-Record mit einem bestimmten Inhalt an. Kann Let’s Excrypt diesen auslesen, wird der Server wieder als unserer angesehen.

Diese Webseite liegt bei netcup, und die bieten so eine Möglichkeit; daher nutze ich die DNS-Challenge:

Die „Schlafzeit“ ist die Zeit, die zwischen dem Anlegen des DNS-Eintrags und dem Abfragen desselben liegt. Soll heißen: Der DNS-Eintrag wird über die API von netcup angelegt, dann wartet der CertBot zwei Minuten und fragt den Eintrag dann ab. Die restlichen Einträge dürften selbsterklärend sein; Kundennummer, API-Schlüssel und API-Passwort gibt’s von netcup. Bei anderen Webhostern, die so eine Schnittstelle bieten, dürfte die Authentifizierung ähnlich ablaufen.

Unter „Zertifikate“ können wir nun ein neues Zertifikat erstellen:

Ich habe mich hier für ein Wildcard-Zertifikat entschieden (*.jan-eggert.com). Das heißt, dass alle Subdomains von jan-eggert.com mit einem Zertifikat verschlüsselt werden. Der Rest ist wieder selbsterklärend: Unter „ACME Account“ wähle ich den Account aus, den ich eben erstellt habe; den „Herausforderungstyp“ habe ich ebenfalls eben erstellt. Die übrigen Parameter können so bleiben.

Wenn wir jetzt auf „Issue / Renew Certificate“ klicken, eine Augenblick warten und die Seite aktualisieren, sollte uns das Zertifikat angezeigt werden:

Zum Schluss geht’s noch in die Einstellungen des ACME-Clients:

Wir aktivieren die automatische Erneuerung und die HAProxy-Integration – und aktivieren das Plugin. Dann legen wir noch einen Zeitplan fest:

Hier wird ein Cronjob im System eingerichtet, der die Zertifikate erneuert.

Das war die Konfiguration des ACME-Clients. Im nächsten Teil gehen wir endlich an die Absicherung unserer Verbindung.