Freigeben über


Ein Zertifikat, das in Exchange Server installiert ist, kann nicht entfernt werden.

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

In diesem Szenario wird die folgende Fehlermeldung angezeigt:

"Ein spezieller RPC-Fehler tritt auf dem Serverservernamen <>auf: Diese Zertifikate sind mit den folgenden Sendeconnectors gekennzeichnet: <Sendeconnectornamen>. Das Entfernen und Ersetzen von Zertifikaten aus dem Sendeconnector würde den E-Mail-Fluss unterbrechen. Wenn Sie trotzdem fortfahren möchten, ersetzen oder entfernen Sie diese Zertifikate aus Sendeconnector, und versuchen Sie es dann mit diesem Befehl."

Screenshot des Fehlers, der angezeigt wird, wenn Sie versuchen, ein Transportzertifikat zu entfernen, das einem Sendeconnector zugeordnet ist.

Das Problem tritt auf, wenn das neue Zertifikat über den gleichen Ausstellernamen und Antragstellernamen verfügt, die vom alten Zertifikat verwendet werden.

Ursache

Um Unterbrechungen des Nachrichtenflusses zu vermeiden, verhindert Exchange Server, dass ein Zertifikat entfernt wird, wenn der Ausstellername und der Antragstellername in der TlsCertificateName-Eigenschaft eines beliebigen Send-Connectors angegeben sind. Das Format des TlsCertificateName Eigenschaftswerts ist "<I>IssuerName<S>SubjectName". Wenn der TlsCertificateName Wert sowohl dem alten als auch dem neuen Zertifikat entspricht, verhindert Exchange Server, dass diese beiden Zertifikate entfernt werden.

Lösung

Führen Sie die folgenden Schritte aus, um das alte Zertifikat zu entfernen. Wenn nicht anders angegeben, führen Sie die folgenden PowerShell-Befehle in der Exchange-Verwaltungsshell (EMS) aus.

  1. Rufen Sie die Fingerabdrücke der neuen und alten Zertifikate ab. Rufen Sie hierzu eine Liste aller Exchange Server Zertifikate ab, indem Sie den folgenden Befehl ausführen. Identifizieren Sie dann die neuen und alten Zertifikate in der Liste.

    Get-ExchangeCertificate | Format-List FriendlyName,Subject,Issuer,CertificateDomains,Thumbprint,NotBefore,NotAfter
    
  2. Verwenden Sie für jeden Sendeconnector, der in der Fehlermeldung gemeldet wird, das Cmdlet Get-SendConnector , um eine aggregierte Liste der zugeordneten Quelltransportserver zu erstellen:

    Get-SendConnector -Identity <connector name> | Format-List SourceTransportServers
    

    Oder identifizieren Sie die Quelltransportserver im EAC wie folgt:

    1. Navigieren Sie zu Nachrichtenfluss>Sendeconnectors.

    2. Für jeden Sendeconnector, der in der Fehlermeldung gemeldet wird:

      1. Doppelklicken Sie, um den Connector zu öffnen.

      2. Navigieren Sie zu Bereichsquellenserver>, um die diesem Connector zugeordneten Server anzuzeigen.

  3. Um Probleme mit dem Nachrichtenfluss während dieses Verfahrens zu minimieren, beenden Sie den Microsoft Exchange-Transportdienst, indem Sie den folgenden Befehl auf jedem Quelltransportserver ausführen, den Sie in Schritt 2 gefunden haben. Der Befehl muss nicht im EMS ausgeführt werden, erfordert jedoch eine PowerShell-Sitzung mit erhöhten Rechten.

    Stop-Service MSExchangeTransport
    

    Oder beenden Sie den Microsoft Exchange-Transportdienst mithilfe des Snap-Ins Services.msc auf jedem Quelltransportserver.

    Hinweis

    Nachdem Sie den Transportdienst beendet haben, wird der Nachrichtenfluss auf jedem Quelltransportserver beendet, bis Sie den Microsoft Exchange-Transportdienst im letzten Schritt dieses Verfahrens neu starten. Weitere Informationen zum Nachrichtenfluss in Exchange Server finden Sie unter Warteschlangen und Nachrichten in Warteschlangen.

  4. Verwenden Sie für jeden Sendeconnector, der in der Fehlermeldung gemeldet wird, das Cmdlet Set-SendConnector , um dessen TlsCertificateName Eigenschaft zu löschen:

    Set-SendConnector -Identity <connector name> -TlsCertificateName $Null
    

    Hinweis

    Wenn Sie über eine große Umgebung verfügen, die verschiedene Standorte verwendet, müssen Sie möglicherweise erzwingen, dass die AD-Replikation den TlsCertificateName Eigenschaftswert auf den betroffenen Quelltransportservern vollständig entfernt.

  5. Entfernen Sie für jeden Quelltransportserver, den Sie in Schritt 2 gefunden haben, das alte Zertifikat, indem Sie den folgenden Befehl ausführen:

    Remove-ExchangeCertificate -Server <server name> -Thumbprint <old certificate thumbprint>
    

    Alternativ können Sie das alte Zertifikat wie folgt im EAC entfernen:

    1. Navigieren Sie zuServerZertifikate>.

    2. Für jeden Quelltransportserver, den Sie in Schritt 2 gefunden haben:

      1. Wählen Sie den Server aus.

      2. Wählen Sie das alte Zertifikat aus, und löschen Sie es dann.

    Hinweis

    Wenn Sie das alte Zertifikat nicht von allen anwendbaren Quelltransportservern entfernen, bevor Sie den TlsCertificateName Eigenschaftswert neu zuweisen, müssen Sie die Auflösungsprozedur wiederholen, um die verbleibenden Instanzen des alten Zertifikats zu entfernen.

  6. Generieren Sie den TlsCertificateName Eigenschaftswert, indem Sie die folgenden Befehle ausführen:

    $cert = Get-ExchangeCertificate -Thumbprint <new certificate thumbprint>
    $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
    
  7. Führen Sie für jeden in der Fehlermeldung gemeldeten Sendeconnector den folgenden Befehl aus, um den Eigenschaftswert zuzuweisen, den TlsCertificateName Sie in Schritt 6 generiert haben:

    Set-SendConnector -Identity <connector name> -TlsCertificateName $tlscertificatename
    
  8. Starten Sie den Microsoft Exchange-Transportdienst neu, indem Sie den folgenden Befehl auf jedem Quelltransportserver ausführen, den Sie in Schritt 2 gefunden haben. Der Befehl muss nicht im EMS ausgeführt werden, erfordert jedoch eine PowerShell-Sitzung mit erhöhten Rechten.

    Start-Service MSExchangeTransport
    

    Alternativ können Sie den Microsoft Exchange-Transportdienst im Snap-In Services.msc auf jedem Quelltransportserver starten.

Weitere Informationen

Führen Sie die folgenden Schritte aus, um zu bestimmen, welches Zertifikat ein Sende- oder Empfangsconnector verwendet:

  1. Aktivieren Sie die Protokollprotokollierung für den Connector. Weitere Informationen zur Protokollprotokollierung finden Sie unter Protokollprotokollierung in Exchange Server.

  2. Öffnen Sie die neueste Protokollprotokolldatei für den Connector. Sie können den entsprechenden Protokollordnerpfad ermitteln, indem Sie den folgenden Befehl in EMS ausführen:

    Get-TransportService | Format-List Identity,*ProtocolLogPath
    
  3. Suchen Sie in der Protokollprotokolldatei nach den Zertifikatinformationen für den Connector, indem Sie in der Spalte nach einem Eintrag suchen, der context mit "Zertifikat senden" beginnt. Die Zertifikatinformationen befinden sich in der data Spalte derselben Zeile. Das Format der Zertifikatinformationen lautet "<Subject><Issuer<>SerialNumber><Thumbprint><NotBefore><NotAfter><CertificateDomains>".

    Sie können das entsprechende Exchange Server Zertifikat finden, indem Sie den folgenden Befehl in EMS ausführen:

    Get-ExchangeCertificate | Format-List Subject,Issuer,SerialNumber,Thumbprint,NotBefore,NotAfter,CertificateDomains
    

Weitere Informationen zur Zertifikatverwaltung finden Sie unter Zertifikatprozeduren in Exchange Server.