Exchange-2019-Zertifikate mit der PowerShell verwalten (2)
Zertifikate spielen für Exchange eine wichtige Rolle bei Diensten wie SMTP und IIS. Doch oft haben diese Zertifikate eine begrenzte Lebensdauer und Admins neigen dazu, das Erneuern zu vergessen. Im ersten Teil dieses Workshops erklären wir zunächst das Erneuern von Exchange-Zertifikaten über die PowerShell, bevor wir im zweiten Teil den Vorgang über Let's Encrypt automatisieren.
Für die automatische Konfiguration des Zertifikats nutzen wir Let's Encrypt. Diese öffentliche Zertifizierungsstelle ermöglicht das Abrufen und Installieren von kostenlosen TLS-/SSL-Zertifikaten auf eine einfache Art und Weise. Alle gängigen Browser und Clients erkennen diese Zertifikate als vertrauenswürdig an, doch leider sind diese nur drei Monaten gültig. Das stellt aber durch den hohen Automatisierungsgrad kein Problem dar.
Automatisierung mit Let's Encrypt
Let's Encrypt ist ACME-fähige Zertifizierungsstelle und verwendet das zugehörige Protokoll zur Automatisierung. Die Auslieferung erfolgt über eine ACME-Clientsoftware von Drittanbietern. Let's Encrypt listet zwar solche Anwendungen auf seiner Website, kontrolliert diese jedoch nicht und gibt auch keine Garantie für deren Sicherheit oder Zuverlässigkeit.
Wir nutzen im Weiteren den ACME-Client "Windows ACME Simple" (WACS). Dessen Dateien legen wir im Verzeichnis "C:\Program Files\Lets Encrypt" ab. Eine Installation ist nicht nötig, wir passen aber die Konfigurationsdatei "settings_default.json" an und setzen die Einstellung "PrivateKeyExportable" auf "true". Dies ist nötig, um das erstellte Zertifikat zu exportieren. Sie müssen WACS mit erweiterten Rechten starten und sind dann in der Lage, Zertifikate über Let's Encrypt zu beantragen und in Exchange einzuspielen – der komplette Vorgang läuft ohne Browser ab. Nach dem Aufruf der Anwendung zeigt sich ein Menü, in dem "M" den Weg zu einem neuen Zertifikat öffnet.
Im Weiteren wählen wir die manuelle Einrichtung, alternativ lässt sich auch eine bereits erstellte Zertifikatsanforderung nutzen. Danach hinterlegen wir die von uns genutzten Hosts "mail.lab.schulenburg.co" sowie "autodiscover.lab.schulenburg.co" in einem einzelnen Zertifikat. Es folgen einige Fragen zur Zertifikaterstellung und nach der Verifizierung sowie dem Hinterlegen des Schlüsseltyps "RSA" fehlt nur noch der Speicher des Zertifikats. Für die Verifizierung stehen verschiedene Möglichkeiten zur Verfügung. Wir haben dies über Port 80 und den Arbeitsspeicher durchgeführt (Option "2").
WACS erlaubt, Skripte nach dem Prozess der Erneuerung aufzurufen. Dies nutzen wir, um das generierte Zertifikat im Anschluss direkt in Exchange einzubinden. Im Assistenten hinterlegen wir das Exchange-Skript mit dem Aufruf "./Scripts/ ImportExchange.ps1". Als Parameter geben wir folgende Erweiterung mit, damit das Zertifikat unter anderem den richtigen Diensten zugeordnet wird: "'{Cert-Thumbprint}' 'IIS,SMTP,IMAP' 1 '{CacheFile}' '{Cache-Password}' '{CertFriendlyName}'".
Bei der ersten Ausführung müssen Sie noch die "Terms of Services" bestätigen und eine E-Mail-Adresse hinterlegen. Die Vorbereitungen sind damit abgeschlossen und die eigentliche Erzeugung des Zertifikates startet. Der Prozess der Zertifikatsbeantragung und -installation ist in WACS sehr gut nachvollziehbar. Nach dem Bereitstellen des Zertifikats ist es im Browser direkt ersichtlich, ohne dass Exchange noch zu konfigurieren ist. Das Tool springt im Anschluss wieder ins Hauptmenü. Hier ist nun ein neues "Renewal" zu sehen, das die Details unserer Antragseigenschaften zeigt. Der Aufruf durch WACS erfolgt zukünftig durch diesen Befehl:
wacs.exe --source manual --host <mail.lab.schulenburg.co>,
<autodiscover.lab.schulenburg.co> --validationmode tls-alpn-01
--certificatestore <Zertifikatspeicher> --installation script
--script ./Scripts/<ImportExchange.ps1 –scriptparameters "'{CertThumbprint}'
'IIS,SMTP,IMAP' 1 '{CacheFile}' '{CachePassword}' '{CertFriendlyName}'"
Automatische Erneuerung von Zertifikaten
Das konfigurierte Zertifikat ist nur 90 Tage gültig und WACS kümmert sich zukünftig um die Erneuerung. Unter "Manage renewals" hinterlegen Sie die Details der gerade erstellten Zertifikatsanforderung, sodass ein Erneuern direkt erfolgen kann. Vorhandene Vorgänge lassen sich aufrufen und wieder neu anstoßen. Eine solche Erneuerung mit WACS müssen Sie auch explizit canceln, wenn sich ein Zertifikat nicht mehr erneuern soll.
Eine geplante Aufgabe ist für die Erneuerung aller vom Programm erstellten Zertifikate zuständig. Die Aufgabe wird von WACS selbst nach der erfolgreichen Anlage eines Zertifikats erstellt und ist in der Windows-Aufgabenplanung ersichtlich. Der Task läuft jeden Tag und prüft, ob ein Zertifikat zur Erneuerung ansteht. Dabei wird die Verlängerung bereits nach 55 Tage initialisiert und nicht erst am letzten Tag. Das Zeitfenster passen Sie in der Datei "settings.json" an. Andere Einstellungen wie das Startdatum lassen sich dort ebenfalls konfigurieren. Alternativ nutzen Sie dazu den Aufgabenplaner.
WACS ist sehr informativ und dokumentiert sämtliche Aktionen in der Windows-Ereignisanzeige mit der Quelle "winacme", sodass immer nachvollziehbar ist, wann welches Zertifikat geprüft und ausgetauscht wurde. Daneben bringt WACS noch ein eigenes Log mit und schreibt alle durchgeführten Aktionen mit. In der erwähnten Konfigurationsdatei lassen sich E-Mail-Benachrichtigung einrichten, was Sie schnell auf Fehler oder erfolgreiche Erneuerungen aufmerksam macht.
Fazit
Das Erneuern von Exchange-Zertifikaten ist eine lästige Pflicht, die Administratoren regelmäßig und oft auf den letzten Drücker beschäftigt. Mit dem Know-how aus diesem Workshop geht der Vorgang dank der PowerShell aber schnell vonstatten und lässt sich mit einem Werkzeug wie WACS automatisieren. (jp/ln)
Im ersten Teil dieses Workshops erklären wir zunächst das Erneuern von Exchange-Zertifikaten über die PowerShell, bevor wir im zweiten Teil den Vorgang über Let's Encrypt automatisieren.
Über den Autor: Christian Schulenburg ist seit über 20 Jahren in der IT tätig und war langjähriger MVP für Exchange. Aktuell arbeitet er als Referent für Digitalisierung beim Landkreistag Mecklenburg-Vorpommern in Schwerin, wo er die Verwaltung in dem Prozess der Digitalisierung unterstützt. Seine Tätigkeitsschwerpunkte liegen bei Salesforce sowie bei Microsoft-Technologien und dabei insbesondere auf Exchange.