Exchange-2019-Zertifikate mit der PowerShell verwalten (1)

Lesezeit
4 Minuten
Bis jetzt gelesen

Exchange-2019-Zertifikate mit der PowerShell verwalten (1)

02.03.2026 - 07:00
Veröffentlicht in:

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.

Exchange-Zertifikate dienen der verschlüsselten Kommunikation sowie der Authentifizierung. Dabei kommen unterschiedliche Zertifikatstypen zum Einsatz: Neben Single-Domain- oder Single-Server- stehen auch SAN- (Subject Alternative Name) und Wildcard-Zertifikate bereit. Ein Single-Server-Zertifikat enthält immer genau einen Domainnamen (beispielsweise "lab.schulenburg.co") und kommt meistens für Webseiten zum Einsatz. SAN-Zertifikate können mehrere alternative Antragstellernamen enthalten, beispielsweise "mail.lab.schulenburg.co" und "autodiscover.lab.schulenburg.co". Diese Variante ist also in der Lage, mehrere Domainnamen mit einem Zertifikat abzudecken und ist bei Exchange-Servern recht verbreitet. Wildcard-Zertifikate decken in der Regel eine komplette Domain ab und enthalten als SAN einen Wildcard-Domainnamen (beispielsweise "*.lab. schulenburg.co"). So bedient er alle Domainnamen unterhalb einer Domain mit nur einem Zertifikat. Ein Zertifikat mit dem SAN "*.lab.schulenburg.co" deckt damit alle Subdomains ab, sollte jedoch unter Exchange nicht für die Dienste POP3, IMAP und SMTP genutzt werden.

Die Zertifikate können selbstsigniert sein oder von einer internen beziehungsweise kommerziellen Zertifizierungsstelle (CA) stammen. Obwohl selbstsignierte Zertifikate für die interne SMTP-Kommunikation sehr gut funktionieren, ist es nicht empfehlenswert, sie für die Clientkommunikation zu verwenden. Hier ist es erforderlich, dass die Clients dem selbstsignierten Zertifikat vertrauen, was einen erhöhten Aufwand bedeutet. Für Exchange-Server sollten Sie Zertifikate von einer öffentlichen und vertrauenswürdigen CA einsetzen. Kostenlos und automatisiert stellt zum Beispiel die freie Zertifizierungsstelle "Let's Encrypt" Zertifikate für Exchange aus.

Wir zeigen in diesem Workshop zunächst den klassischen Weg zur Erneuerung der Zertifikate über die PowerShell. Hierbei kommen Windows Server 2022 und Exchange 2019 zum Einsatz. Im Anschluss automatisieren wir den Abruf von Let's-Encrypt-Zertifikaten mit einem "Automatic Certificate Management Environment"-Client (ACME-Client).

Exchange-Zertifikat erneuern

Um Exchange-Zertifikate zu erneuern, konnten Sie in der Vergangenheit wahlweise das Exchange Admin Center (EAC) oder die Exchange Management Shell (EMS) nutzen. Seit Exchange 2019 CU12 beziehungsweise Exchange 2016 CU23 lassen sich Zertifikatsanfragen nicht mehr über das Exchange Admin Center durchführen, da der hierzu nötige UNC-Pfad aus Sicherheitsgründen entfernt wurde. Betroffen von der Anpassung sind die Cmdlets "New-ExchangeCertificate", "Import-ExchangeCertificate" und "Export-ExchangeCertificate", bei denen die Parameter "RequestFile" beziehungsweise "FileName" nicht mehr verfügbar sind. Da die EAC diese Befehle im Hintergrund aufruft, stehen diese Aktionen dort nicht mehr zur Verfügung. In der EAC lassen sich nur noch Zertifikate löschen, Dienste für ein Zertifikat aktivieren oder selbstsignierte Zertifikate erstellen. Das Erneuern eines Zertifikats lässt sich nur noch in der EMS durchführen. Hierbei kommt das Attribut "FileData" mit Verweis auf das Zertifikat zum Einsatz.

Haben Sie kein Zertifikat, dass Sie als Grundlage für ein neues nutzen möchten, erstellen Sie eine gänzliche neue Zertifikatsignierungsanforderung (Certificate Signing Request; CSR) mit dem New-ExchangeCertificate-Cmdlet unter Einsatz des Attributs "GenerateRequest". Hierbei sind verschiedene Eigenschaften, wie Namen und Domains anzugeben. Es ist dabei sehr wichtig, alle benötigten Exchange-URLs zu kennen und korrekt beim Attribut "DomainName" zu hinterlegen.

Zur Abfrage der benötigten Exchange-URLs sind im Internet verschiedene Skripte verfügbar. Alternativ fragen sie die URLs über die EAC in den Eigenschaften der virtuellen Verzeichnisse ab. Wichtig ist zudem der erwähnte Parameter "GenerateRequest" – ist dieser nicht enthalten, entsteht automatisch ein selbstsigniertes Zertifikat. Eine komplette Anfrage sieht wie folgt aus:

New-ExchangeCertificate -GenerateRequest -FriendlyName "<Name des Zertifikats>" 
 -PrivateKeyExportable $true -SubjectName "c=<Länderkürzel, zum Beispiel DE>,
 o=<Name der Organisation>,cn=<Exchange-URL>" -DomainName <Exchange-Domäne 1>,
 <Exchange-Domäne 2>

Als Ergebnis erhalten Sie eine sehr lange Zeichenfolge in der PowerShell. Sofern Sie eine Textdatei mit der Anfrage benötigen, lässt sich die Ausgabe nicht mehr direkt über das Attribut "RequestFile" exportieren. Hierfür müssen Sie diese Anfrage zunächst in eine Variable schreiben, die Sie dem Befehl voranstellen:

$binrequest = New-ExchangeCertificate [Rest wie zuvor]

Jetzt können Sie das Ergebnis in eine Textdatei umlenken. Für diesen Schritt stehen verschiedene Möglichkeiten zur Verfügung, am Schnellsten geht es so:

Set-Content -Path "C:\CertRequest\<Textdatei.txt>" -Value $certrequest

Bei einer Zertifikatserneuerung verwenden Sie das Get-ExchangeCertificate-Cmdlet, um die Details des zu erneuernden Zertifikats zu überprüfen, das für die Exchange-Dienste zur Anwendung kommt. Hierbei ist es ausreichend, sich den Daumenabdruck (Thumbprint) des Zertifikats zu merken, da Sie das vorhandene Zertifikat für die Anforderung nutzen können. Somit müssen Sie die einzelnen Details nicht mehr hinterlegen und der Befehl verkürzt sich auf die folgende Zeile:

Get-ExchangeCertificate -Thumbprint <Thumbprint> | New-ExchangeCertificate 
 -GenerateRequest

Im Anschluss ist die Anforderung unter den Exchange-Zertifikaten mit dem Status "PendingRequest" ersichtlich. Sie wird nun bei einer Zertifizierungsstelle genutzt, um ein entsprechendes Zertifikat zu generieren. In unserem Fall haben wir ein 90-Tage-Testzertifikat über "sslforfree. com" erstellt. Das Zertifikat importieren Sie nun in Exchange:

Import-ExchangeCertificate -FileData ([Byte[]]$(Get-Content -Path C:\Certreq\
 <Zertifikat>.cer -Encoding byte -ReadCount 0))

Nun steht es Exchange zur Verfügung, ist aber noch nicht aktiv und Sie müssen es noch den Exchange-Diensten wie IIS oder SMTP) zuweisen:

Enable-ExchangeCertificate -Server <Exchange-Server -Thumbprint <Wert des Thumbprint> 
 -Services <Exchange-Dienst 1>,<Exchange-Dienst 2>

Das Zuweisen ist dabei auch über die EAC möglich. Der Austausch des Zertifikats ist damit abgeschlossen. Den Zugriff über ein neues Zertifikat prüfen Sie relativ einfach mit "Outlook on the Web". Dazu geben Sie im Browser die öffentliche Exchange-Adresse mit der Erweiterung "OWA" ein. Der Aufruf sollte ohne Fehlermeldung klappen und unser erstelltes Zertifikat zeigen.

Öffentliche Zertifikatsstellen wie hier "sslforfree.com" stellen kostenlose Zertifikate aus. Diese sind in den meisten Fällen nur wenige Monate gültig und binden nur einen DNS Namen.
Bild 1: Es gibt öffentliche Zertifikatsstellen wie hier "sslforfree.com", die kostenlose Zertifikate ausstellen. Diese sind in den meisten Fällen nur wenige Monate gültig und binden nur einen DNS Namen.
 

Ob Outlook und Autodiscover korrekt laufen, lässt sich mit dem Microsoft Remote Analyzer prüfen. Im Analyzer führen Sie Verbindungstests im Bereich "Exchange" aus. Das alte Zertifikat löschen wir zum Abschluss über das Remove-ExchangeCertificate-Cmdlet mit dem zugehörigen Thumbprint-Wert.

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.