Lets Encrypt-Zertifikat mit ACME2-Client ausstellen, installieren, automatisch erneuern


    Tags: , ,

    Logo Let's EncryptLet's Encrypt betreibt eine freie und mittlerweile sehr populäre CA für SSL-Zerti­fikate. Deren größte Ein­schränkung besteht in der Gültig­keit von nur 90 Tagen. Daher wird man das Ver­längern und Instal­lieren der Zertifikate mög­lichst automa­tisieren. Der ACME2-Client für Windows bietet ent­sprechende Funktionen.

    In einem früheren Artikel zu Lets Encrypt habe ich gezeigt, wie man Zertifikate für die Absicherung von IIS und Exchange anfordern kann. Zu diesem Zeitpunkt unterstützte der Windows-Client von Tinus Wouter erst die Version 1 des ACME-Protokolls, seit einiger Zeit aber nun auch ACME 2 (Download von win-acme 2). Damit lässt sich das Management von Zertifikaten weitgehend auto­matisieren.

    Client entpacken und starten

    Den Client kann man nach dem Herunter­laden in ein beliebiges Verzeichnis auf dem Server entpacken. Der Speicherort sollte danach allerdings nicht mehr verändert werden, da dieser für die Rezertifizierung wichtig sein kann.

    Wie die frühere Version handelt es sich bei der aktuellen Ausführung um ein Menü-geführtes Programm für die Kommando­zeile, so dass es sich etwa auch unter Server Core ausführen lässt. Es wird über den Aufruf von wacs.exe gestartet.

    Zertifikat über den Simple Mode anfordern

    Die interaktive Anforderung eines Zertifikats über den Simple Mode funktioniert weitgehend gleich wie in der alten Version. In unserem Beispiel führe ich das Programm auf einem Windows Server 2019 aus, auf dem die IIS-Rolle läuft.

    Für die Verifizierung der Domäne habe ich die Bindung am IIS konfiguriert wie aus der folgenden Abbildung ersichtlich.

    Beispiel für die Konfiguration der IIS-Bindungen vor der Anforderung eines Zertifikats

    Nach dem Start von win-acme wählt man die Option N, um ein Zertifikat mit den Standard­einstellungen zu erzeugen. Dabei sucht das Tool nach den Bindungen im IIS. Sind diese nicht konfiguriert, dann bricht der Vorgang ab.

    Interaktives Ausstellen eines Zertifikats über den Simple Mode

    Im nächsten Schritt wählt man die IIS-Website aus, für die man das Zertifikat anfordern möchte.

    Auswahl der IIS-Site, in diesem Beispiel existiert nur Default.

    Anschließend entscheidet man sich, ob alle Bindungen oder nur bestimmte genommen werden sollen. Im zweiten Fall wählt man diese über einen Filter aus.

    Auswahl zwischen allen oder bestimmten Bindungen

    Nach einer weiteren Bestätigung startet die Zertifikats­anforderung. Um den Besitz der Domäne zu verifizieren, nutzt das Programm die Methode http-01. Dabei erhält der Client von Let's Encrypt ein Token, das er in eine Datei auf dem lokalen Server schreibt und die nachher von Let's Encrypt ausgelesen wird.

    Validierung der Domäne durch Let's Encrypt über http-01

    Im unten stehenden Screenshot scheitert die Anforderung, weil die Freigabe für Port 80 auf der Firewall fehlt. Let's Encrypt möchte nämlich den Token über HTTP aus der Datei erfassen.

    Die erfolgreiche Ausstellung eines Zertifikats erfordert bei http-01, dass der Host über Port 80 erreichbar ist.

    Das Zertifikat findet sich nach dem erfolgreichen Abschluss des Vorgangs erwartungs­gemäß im Zertifikatsspeicher des anfordernden Servers. Zusätzlich legt es der Client unter
    C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org
    im PEM-und PFX-Format ab.

    Optionen zur Validierung der Domäne

    Den Besitz an der Domäne, für die man ein Zertifikat anfordert, muss man nicht nur bei der Erst­ausstellung nachweisen, sondern anschießend alle 3 Monate für die Erneuerung des Zertifikats.

    In der Regel ist es aber nicht erwünscht, dass ein Server nur für die Anforderung eines Zertifikates ohne Schutz dauerhaft auf Port 80 aus dem Internet erreichbar ist. Hier könnte man den Einsatz eines Proxys oder einer zeitweiligen Portfreigabe erwägen.

    Erfolgreicher Abschluss der Zertifikatanforderung nach Öffnung von Port 80 in der Firewall

    Geht es nur um wenige Server, dann könnte der jeweilige Administrator die Verlängerung auf Termin legen und das Zertifikat manuell erneuern. In der Regel wird man aber eher versuchen, den ganzen Vorgang zu automatisieren.

    Diesem Vorhaben kommt win-acme schon bei der Anforderung entgegen, indem es eine geplante Aufgabe für die Erneuerung des Zertifikats einrichtet,.

    win-acme legt bei der Anforderung eines Zertifikats eine geplante Aufgabe für das Renewal an.

    Um die periodische Öffnung der Firewall auf Port 80 zu umgehen, bietet es sich an, statt http-01 eine andere Challenge zu wählen. In Frage kommt dabei vor allem DNS-01, bei dem das Token als TXT-Record in das DNS eingetragen wird.

    Diese Methode hat zudem den Vorteil, dass man damit Wildcard-Zertifikate ausstellen kann. Voraus­setzung für DNS-01 ist natürlich, dass die betreffende Domäne außer Haus gehostet wird und somit für Let's Encrypt zugänglich ist.

    Für die Auto­matisierung des DNS-Eintrags gibt es eine Reihe von Plugins für win-acme, die für unter­schiedliche Domain-Hoster wie Azure, Cloudflare oder Routre 53 von AWS ausgelegt sind.

    Installation der Zertifikate

    Wenn man die Erneuerung der Zertifikate alle 90 Tage automatisiert hat, bleibt mit der Installation noch ein weiterer Schritt für den vollständigen Abschluss der Aufgabe. Dieser ist umso aufwändiger, je mehr Dienste man mit den Zertifikaten ausstatten möchte. In der Praxis sind das neben den IIS oder Exchange auch Remote Desktop Services, Proxys usw.

    Während der Client das Zertifikat für die IIS automatisch einrichtet, erfordern andere Dienste dafür eigene Prozeduren. Aus diesem Grund erlaubt win-acme 2 die automatische Ausführung von Scripts (.bat, .ps1) oder auch .exe-Dateien direkt nach der erfolgreichen Ausstellung eines Zertifikats.

    Das Tool bringt eine Reihe solcher Scripts mit, unter anderem für den Import von Zertifikaten in diverse RDS-Komponenten, Load Balancer von Kemp, ADFS oder Exchange. Für Letzteres kann man auch ExchangeLetsEncrypt.ps1 aus dem vorangegangenen Artikel nutzen, um das Zertifikat zu importieren und an die verschiedenen Dienste zu binden.

    Zum Lieferumfang von win-acme 2 gehören mehrere Scripts zum Import des Zertifikats in diverse Systeme.

    Ich empfehle, die Scripts vor dem Einsatz auf produktiven Systemen zuerst auf einer Testumgebung auszuprobieren. Sonst sind im schlimmsten Fall bei einem Fehler wichtige Dienste nicht mehr für die Benutzer erreichbar.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Keine Kommentare