


Das Problem
Damit Exchange Edge-Transport-Server korrekt arbeiten können, müssen die Empfängerinformationen, die Exchange Topologie und weitere Konfigurationen von internen Exchange Servern übertragen werden. Zur Übertragung nutzt Exchange Server EdgeSync (Secure LDAP) auf Basis eines sog. Edge-Abonnements sicher zu übertragen.
Nach dem Import einer Import der Edge-Abonnement-XML-Datei auf einem internen Exchange Server kann es zu einem Fehler kommen. Der Exchange Server ist u.U. nicht in der Lage, eine EdgeSync-Verbindung zum entsprechenden Edge-Transport-Server aufzubauen.
Im Ereignisprotokoll des internen Exchange Servers findest du folgende Fehlermeldung:
Log Name: Application Source: MSExchange EdgeSync Event ID: 1035 Task Category: Synchronization Level: Error Keywords: Classic Description: EdgeSync failed to synchronize because it only supports Cryptographic API certificates. The local Hub Transport server's default certificate with thumbprint XYZ isn't a CAPI certificate. To set a CAPI certificate as the default certificate, use the Enable-ExchangeCertificate cmdlet with the Services parameter using the value of SMTP.
Der Grund
Der private Schlüssel des aktuell auf dem internen Exchange Server konfigurierten Standard-Transport-Zertifikates nutzt einen CNG-Schlüssel. EdgeSync funktioniert jedoch nur einen CAPI1-basierten privaten Schlüssel.
- CNG = Cryptography Next Generation
- CAPI1 = Cryptographic API (seit Langem abgekündigt)
Dieses Problem tritt meist dann auf, wenn das TLS-Zertifikat von Enterprise Certificate Authority auf Basis einer Vorlage mit individuellen Sicherheitseinstellungen erstellt wird.
Wie kannst du prüfen, ob das Standard-Zertifikat des Transportdienstes ein CNG- oder CAPI1-Zertifikat ist?
Schritt 1
- Melde dich auf dem internen Exchange Server an, auf dem du die Edge-Abonnement-Datei importiert hast und starte einen administrative Exchange Management Shell
- Lass dir den Fingerabdruck des Standard-Zertifikat des Exchange-Transportdienstes anzeigen
Get-TransportService | ft Name,InternalTransportCertificateThumbprint
Schritt 2
- Öffne eine administrative Kommandozeile
- Exportiere alle Zertifikatinformationen in eine Textdatei
certutil -v -store my > cert.txt
Schritt 3
- Öffne die Textdatei mit einem Texteditor deiner Wahl
- Suche den Fingerabdruck aus Schritt 2 in der Textdatei
- Prüfe den Abschnitt der Provider-Einträge und suche die beiden folgenden Attribute
- ProviderType
- KeySpec
Wenn beide Attribute den Wert 0 haben, dann handelt es sich um ein CNG-Zertifikat.
Beispielhaft sieht der Provider-Abschnitt wie folgt aus:
Unique container name: XYZ Provider = Microsoft Software Key Storage Provider ProviderType = 0 Flags = 20 (32) CRYPT_MACHINE_KEYSET -- 20 (32) KeySpec = 0 -- XCN_AT_NONE
Die Lösung
Mit OpenSSL kannst du das CNG-Zertifikat in ein CAPI1-Zertifikat umwandeln.
Die Nutzung von OpenSSL erfordert das Herunterlanden und Installieren von OpenSSL for Windows. Ich empfehle, dass du die Software auf einem Admin-PC installierst und nicht direkt auf einem Exchange Server. Zusätzlich benötigst du das zu konvertierende TLS-Zertifikat in einer PFX-Datei.
Mit den folgenden Schritten konvertierst du das CNG-Zertifikat in ein CAPI1-Zertifikat.
- Lade OpenSSL herunter und installiere die Software
- Öffnen den OpenSSL Command Prompt
- Navigiere zu dem Verzeichnis mit der PFX-Datei
- Konvertieren die PFX-Datei in eine PEM-Datei
Indealerweise fragt dich OpenSSL nach dem Kennwort der PFX-Datei
openssl pkcs12 -in CERT.pfx -out cert.pem -nodes
- Konvertiere die erstellte PEM-Datei in eine neue PFX-Datei
OpenSSL fragt dich nach einem Kennwort für die neue Date
openssl pkcs12 -export -in cert.pem -out NEWCERT.pfx
Die neue PFX-Datei enthält nun ein CAPI1-Zertifikat. Diese Zertifikat hat den gleichen Fingerabdruck, wie das vorherige Zertifikat. Importiere nun das neue Zertifikat auf jedem betroffenen Exchange Server der Active Directory Site, zu der die Edge-Transport-Server abonniert werden sollen.
Der Austausch des Zertifikates erfordert ein Wartungsfenster für die lokalen Exchange Server. Dies ist notwendig, da du zuerst das installierte CNG-Zertifikat in der Dienstnutzung austauschen und anschließend entfernen musst. Anschließend kannst du das konvertierte CAPI1-Zertifikat installieren und als Standard-Zertifikat dem Transportdienst und weiteren Diensten wieder zuweisen.
- Melde dich am internen Exchange Server an, auf dem zu zuvor das Edge-Abonnement importiert hast und starte eine neue Exchange Management Shell
- Frage die lokalen Exchange Server Zertifikate ab und finde das selbstsignierte Exchange Server Standard-Zertifikat mit dem Servername als Common Name (CN)
Get-ExchangeCertificate -Server $env:COMPUTERNAME | ?{($_.IsSelfSigned -eq $true) -and ($_.Subject -ilike "CN=$($env:COMPUTERNAME)*") }
- Kopiere den Fungerabdruck des Zertifikates in die Zwischenablage
- Aktiviere diese Zertifikat als Standard-Zertifikat des Transportdienstes Exchange, bevor du das CNG-Zertifikat löschst
# Die Abfrage, ob du das Standard-Zertifikat überschreiben möchtest, musst du mit Ja beantworten Enable-ExchangeCertificate -Thumbprint SELFSIGNEDTHUMBPRINT -Services SMTP # Führe einen Neustart des Transportdienstes aus, damit das neu zugewiesene Zertifikat verwendet wird Restart-Service MSExchangeTransport
- Lösche das CNG-Zertifikat
- Dies kannst du über die MMC des Zertifikatsspeichers, die Exchange Management Shell oder das Exchange Admin Center durchführen
- Imporiere das konvertierte CAPI1-Zertifikat
- Der Import über die Exchange Management Shell ist der sicherste Weg, um auch die passenden Berechtigungen zuzuordnen
- Für den Import muss der Dateipfad als UNC-Pfad angegeben werden
# Import des CAPI1 Zertifaktes Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('\\EXCHANGESERVER\D$\CERTS\CAPI1Certificate.pfx')) -Password (ConvertTo-SecureString -String 'P@ssw0rd1' -AsPlainText -Force)
- Aktiviere des importiere Zertifikate und ersetze, wie zuvor, das Standard-Zertifikat des Transportdienstes
# Die Abfrage, ob du das Standard-Zertifikat überschreiben möchtest, musst du mit Ja beantworten Enable-ExchangeCertificate -Thumbprint CAPI1CERTTHUMBPRINT -Services SMTP # Führe einen Neustart des Transportdienstes aus, damit das neu zugewiesene Zertifikat verwendet wird Restart-Service MSExchangeTransport
- Tausche das Zertifikat auf jedem internen Exchange Servern der gleichen Active Directory Site aus
Nachdem nun die internen Exchange Server korrekt vorbereitet sind, um EdgeSync auszuführen, muss noch eine Prüfung auf den Edge-TransPort-Servern erfolgen.
Edge-Transport-Server sind keine Domänenmitglieder und erhalten somit auch keine Gruppenrichtlinien-basierte Konfiguration. Jede Konfiguration erfolgt lokal, für jeden Server getrennt. Um sicherzustellen, dass das Standard-Zertifikat der internen Exchange Server für kryptographische Operationen verwendet werden kann, musst du sicherstellen, dass die Zertifikate der gesamten Zertifikatskette im Zertifikatsspeicher der Edge-Transport-Server vorhanden ist.
Prüfe die Zertifikatskette des CAPI1-Zertifikates und importiere das Stammzertifikat (Root-CA) und alle erforderlichen Zwischenzertifikate (Subordinate-CA) in den lokalen Zertifikaspeicher jedes Edge-Transport-Servers. Stelle sicher, dass die Zertifikate jeweils im passenden SPeicherort abgelegt sind:
- Root-CA in Trusted Root Certification Authorities Certificates
- Subordinate-CA in Intermediate Certification Authorities Certificates
Zum Schluss kannst du auf den Edge-Transport-Servern ein neues Edge-Abonnement erstellen, und jeden Server zur Active Directory Site der internen Exchange Server hinzufügen. Die internen Exchange Server sind nun in der Lage, eine EdgeSync-Verbindung erfolgreich aufzubauen und die zu übertragenden Daten zu verschlüsseln.
Hinweis
Wenn du ein TLS-Zertifikat als PFX/PKCS12 nutzt, wird das eigentliche Zertifikat und der private Schlüssel importiert. Der Importprozess legt fest, welcher Verschlüsselungsanbieter (Crypto Provider) für den privaten Schlüssel verwendet wird. Mit dem folgenden Befehl stellst du sicher, dass der Importprozess den sog. Legacy Crypto Provider verwendet.
certutil -csp "Microsoft RSA SChannel Cryptographic Provider" -importpfx my MYCERT.pfx
Links
- Exchange Edge Transport Server Role
- Edge Subscriptions
- Cryptography API: Next Generation
- Cryptographic Service Providers
- OpenSSL for Windows
Viel Spaß mit Exchange Server und Edge Transport!
Werde Mitglied der Exchange User Group DACH und tausche dich mit anderen Exchange Enthusiasten aus.
Folge uns auf Twitter @exusg, nimm am nächsten Meetup teil oder besuche unsere Website.