Zuletzt aktualisiert am 3. August 2023.
Im Jahr 2023 sollte man davon ausgehen, dass aktuelle Softwareprodukte SHA1 für Verschlüsselung und Signaturalgorithmus nicht mehr verwenden. Aber weit gefehlt. Dieser Artikel befasst sich mit dem Verhalten von Exchange Server 2019 bei der Ausstellung einer Zertifikatsanfrage, dem sog. Certificate Requests für ein neues Zertifikat.
Aufgekommen ist das Thema, weil ein Kunde beim Einreichen der Zertifikatsanfrage von der Zertifizierungsstelle die Fehlermeldung erhielt, dass die Zertifikatsanfrage einen unsicheren Signaturalgorithmus verwendet.
Aber der Reihe nach.
Problem
Exchange Server ermöglicht die Erstellung einer neuen Zertifikatsanfrage mit Hilfe des Cmdlets New-ExchangeCertificate. Mit diesem Befehl haben wir in der Vergangenheit schnell und einfach neue Anfragen für TLS-Zertifikate für den konfigurierten Exchange Namensraum erstellt.
# Request erstellen
$request = New-ExchangeCertificate -SubjectName "c=DE,o=Varuna Group,cn=mail.varunagroup.de" -DomainName autodiscover.varunagroup.de,mail.varunagroup.de -GenerateRequest
# Request als Datei speichern
[System.IO.File]::WriteAllBytes("\\$($env:COMPUTERNAME)\E$\SCRIPTS\CertRequest.req", [System.Text.Encoding]::Unicode.GetBytes($request))
Im Anschluss haben wir den Request mit dem CSR-Dekoder dekodiert.

Im dekodierten Request sahen wir die Ursache, warum die Zertifizierungsstelle die Originalanfrage abgeleht hat.
- Signature Algorithm: sha1WithRSAEncryption

Der Grund für dieses Problem liegt im Cmdlet New-ExchangeCertificate selbst. Eigentlich sollte das Problem mit Exchange Server 2019 CU11 gefixt sein, wie dieser Knowledge Base Artikel beschreibt. Der Fix greift nur für Neuinstallationen von Exchange Server, nicht bei der Installation eines kumulativen Updates als Aktualisierung. Ebenso greift er Fix nicht für die Erstellung von neuen Zertifikatsanfragen mit New-ExchangeCertificate. Der Fix betrifft einzig die Erstellung der selbstsignierten Zertifikate bei einer Neuinstallation mit einer neuen Exchange Organisation. Die Nutzung von SHA1 für Zertifikatsanfragen im Cmdlet New-ExchangeCertificate ist hart kodiert.
Lösung
Damit SHA256 als Signatur-Algorithmus verwendet wird, ist die Nutzung des Kommandozeilentools certreq und einer .inf-Konfigurationdatei. Damit hat man die volle Kontrolle über den Hash-Algorithmus und weitere Parameter.
Beispiel einer Konfigurationsdatei. Zeile 14 definiert den Hash-Algorithmus.
Die Erstellung des Requests erfolgt mit folgendem Befehl in einer administrativen Kommandozeile.
CertReq -new certificate.inf certrequestRSA256.req
Die Datei certrequestRSA256 enthält anschließend den Request. Die Prüfung mit dem CSR-Dekoder zeigt die richtige Antwort. Der Signaturalgorithmus ist sha256WithRSAEncryption.

Das von der Zertifizierungsstelle ausgestellte Zertifikat wird auf dem gleichen System, auf dem Request erstellt wurde, mit folgendem Kommando importiert.
CertReq -accept DATEINAME.crt
Hierbei werden der private Schlüssel, der in der Zertifikatanfrage gespeichert ist, mit dem ausgestellten Zertifikat verheiratet. Anschließend kann das Zertifikat mit privatem Schlüssel für die Sicherung oder die Übertragung auf andere Systeme exportiert werden.
Empfehlung
Die vollständige Kontrolle über einen Zertifikatrequest hat du mit einer Konfigurationsdatei und dem Kommandozeile-Tool CertReq.exe. Der Zugriff auf dem lokalen Zertifikatspeicher ist geschützt. Daher kann das Tool in einer Kommandozeile mit administrativen Berechtigungen korrekt arbeiten.
Die von Exchange Server selbst-signiert ausgestellten Zertifikate erfüllen alle eine Zweck. Wenn Zertifikate einfach aus dem Zertifikatspeicher eines Exchange Server entfernt werden, weil sie selbst-signiert sind oder aber über einen SHA1-Algorythmus verfügen, kommt es zu einem Fehlverhalten von Exchange Server. Wenn diese Zertifikate ausgetauscht werden müssen, um z.B. Sicherheitsrichtlinien des Unternehmens zu erfüllen, so muss dies planvoll erfolgen. Die Zertifikate sind kontrolliert, mit neuen Sicherheitsfunktionen, zu erneuern.
Links
- New-ExchangeCertificate
- CSR-Dekoder
- Exchange Server 2019 and 2016 certificates created during setup use SHA-1 hash (KB5006983)
- Create Exchange internal/external Url-based certificate requests
Viel Spaß mit Exchange Server.
Teilen mit:
- Klick, um über Twitter zu teilen (Wird in neuem Fenster geöffnet)
- Klick, um auf Facebook zu teilen (Wird in neuem Fenster geöffnet)
- Klick, um auf LinkedIn zu teilen (Wird in neuem Fenster geöffnet)
- Klicken, um auf Telegram zu teilen (Wird in neuem Fenster geöffnet)
- Klicken, um einem Freund einen Link per E-Mail zu senden (Wird in neuem Fenster geöffnet)