Udostępnij za pomocą


Nie można usunąć certyfikatu zainstalowanego w programie Exchange Server

Objawy

Rozważmy następujący scenariusz:

W takim scenariuszu jest wyświetlany następujący komunikat o błędzie:

Występuje specjalny błąd RPC na serwerze <nazwa serwera>: te certyfikaty są oznaczone następującymi łącznikami wysyłania: <nazwy łączników wysyłania>. Usunięcie i zastąpienie certyfikatów z łącznika wysyłania spowoduje przerwanie przepływu poczty. Jeśli nadal chcesz kontynuować, zastąp lub usuń te certyfikaty z łącznika Send Connector, a następnie spróbuj wykonać to polecenie.

Zrzut ekranu przedstawiający błąd wyświetlany podczas próby usunięcia certyfikatu transportu skojarzonego z łącznikiem Wyślij.

Problem występuje, jeśli nowy certyfikat ma taką samą nazwę wystawcy i nazwę podmiotu , które są używane przez stary certyfikat.

Przyczyna

Aby uniknąć zakłóceń przepływu poczty, program Exchange Server uniemożliwia usunięcie certyfikatu, jeśli nazwa wystawcy i nazwa podmiotu są określone we właściwości TlsCertificateName dowolnego łącznika wysyłania. Format wartości właściwości TlsCertificateName to "<I>IssuerName<S>SubjectName". Jeśli wartość jest zgodna TlsCertificateName zarówno ze starym, jak i nowym certyfikatem, program Exchange Server uniemożliwi usunięcie obu tych certyfikatów.

Rezolucja

Aby usunąć stary certyfikat, wykonaj następujące kroki. Jeśli nie określono inaczej, uruchom następujące polecenia programu PowerShell w powłoce zarządzania programu Exchange (EMS).

  1. Pobierz odciski palca nowych i starych certyfikatów. Aby to zrobić, pobierz listę wszystkich certyfikatów programu Exchange Server, uruchamiając następujące polecenie. Następnie zidentyfikuj nowe i stare certyfikaty na liście.

    Get-ExchangeCertificate | Format-List FriendlyName,Subject,Issuer,CertificateDomains,Thumbprint,NotBefore,NotAfter
    
  2. Dla każdego łącznika Send zgłoszonego w komunikacie o błędzie użyj polecenia cmdlet Get-SendConnector , aby utworzyć zagregowaną listę skojarzonych serwerów transportu źródłowego:

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

    Lub zidentyfikuj źródłowe serwery transportu w EAC w następujący sposób:

    1. Przejdź do Przepływ poczty>Łączniki wysyłania.

    2. Dla każdego zgłoszonego w komunikacie o błędzie łącznika nadawczego:

      1. Kliknij dwukrotnie, aby otworzyć łącznik.

      2. Przejdź do Określanie zakresu>Serwer źródłowy, aby zobaczyć serwery skojarzone z tym łącznikiem.

  3. Aby zminimalizować problemy z przepływem poczty podczas tej procedury, zatrzymaj usługę transportową Microsoft Exchange, uruchamiając następujące polecenie na każdym źródłowym serwerze transportu znalezionym w kroku 2. Polecenie nie musi być uruchamiane w programie EMS, ale wymaga sesji programu PowerShell z podwyższonym poziomem uprawnień.

    Stop-Service MSExchangeTransport
    

    Możesz też zatrzymać usługę transportową programu Microsoft Exchange przy użyciu przystawki Services.msc na każdym źródłowym serwerze transportu.

    Uwaga / Notatka

    Po zatrzymaniu usługi transportu przepływ poczty na każdym źródłowym serwerze transportu zostanie zatrzymany do momentu ponownego uruchomienia usługi transportowej Microsoft Exchange w ostatnim kroku tej procedury. Aby uzyskać więcej informacji na temat przepływu poczty w programie Exchange Server, zobacz Kolejki i komunikaty w kolejkach.

  4. Dla każdego łącznika Send zgłoszonego w komunikacie błędu użyj polecenia cmdlet Set-SendConnector, aby wyczyścić jego właściwość TlsCertificateName.

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

    Uwaga / Notatka

    Jeśli masz duże środowisko korzystające z różnych lokacji, może być konieczne wymusienie replikacji usługi AD , aby w pełni usunąć TlsCertificateName wartość właściwości na serwerach transportu źródłowego, którego dotyczy problem.

  5. Dla każdego źródłowego serwera transportu znalezionego w kroku 2 usuń stary certyfikat, uruchamiając następujące polecenie:

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

    Możesz albo usunąć stary certyfikat w Centrum administracyjnym programu Exchange w następujący sposób:

    1. Przejdź do Serwery>Certyfikaty.

    2. Dla każdego źródłowego serwera transportu znalezionego w kroku 2:

      1. Wybierz serwer.

      2. Wybierz stary certyfikat, a następnie usuń go.

    Uwaga / Notatka

    Jeśli nie usuniesz starego certyfikatu ze wszystkich odpowiednich serwerów transportu źródłowego przed ponownym przypisaniem TlsCertificateName wartości właściwości, należy powtórzyć procedurę rozpoznawania, aby usunąć pozostałe wystąpienia starego certyfikatu.

  6. Wygeneruj wartość właściwości TlsCertificateName przez uruchomienie następujących poleceń:

    $cert = Get-ExchangeCertificate -Thumbprint <new certificate thumbprint>
    $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
    
  7. Dla każdego łącznika wysyłania, który został zgłoszony w komunikacie o błędzie, uruchom następujące polecenie, aby przypisać wartość właściwości TlsCertificateName wygenerowaną w kroku 6:

    Set-SendConnector -Identity <connector name> -TlsCertificateName $tlscertificatename
    
  8. Uruchom ponownie usługę Transportu programu Microsoft Exchange, uruchamiając następujące polecenie na każdym źródłowym serwerze transportu, który został znaleziony w kroku 2. Polecenie nie musi być uruchamiane w programie EMS, ale wymaga sesji programu PowerShell z podwyższonym poziomem uprawnień.

    Start-Service MSExchangeTransport
    

    Możesz też uruchomić na każdym źródłowym serwerze transportu usługę Microsoft Exchange Transport w przystawce Services.msc.

Więcej informacji

Aby określić, którego certyfikatu używa łącznik Wyślij lub Odbierz, wykonaj następujące kroki:

  1. Włącz rejestrowanie protokołu dla łącznika. Aby uzyskać więcej informacji na temat rejestrowania protokołów, zobacz Rejestrowanie protokołu w programie Exchange Server.

  2. Otwórz najnowszy plik dziennika protokołu dla łącznika. Odpowiednią ścieżkę folderu dziennika można określić, uruchamiając następujące polecenie w usłudze EMS:

    Get-TransportService | Format-List Identity,*ProtocolLogPath
    
  3. W pliku dziennika protokołu znajdź informacje o certyfikacie łącznika, wyszukując wpis rozpoczynający się od "Wysyłanie certyfikatu" w kolumnie context . Informacje o certyfikacie są w data kolumnie tego samego wiersza. Format informacji o certyfikacie to "<Subject><Issuer><SerialNumber><Thumbprint><NotBefore><NotAfter><CertificateDomains>".

    Odpowiedni certyfikat serwera Exchange można znaleźć, uruchamiając następujące polecenie w usłudze EMS:

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

Aby uzyskać więcej informacji na temat zarządzania certyfikatami, zobacz Procedury certyfikatów w programie Exchange Server.