Condividi tramite


Non è possibile rimuovere un certificato installato in Exchange Server

Sintomi

Considerare lo scenario descritto di seguito:

In questo caso, viene visualizzato il seguente messaggio di errore:

"Si verifica un errore RPC speciale sul nome del server<: questi certificati sono contrassegnati con i seguenti connettori di invio: <Nomi> connettori di invio.> La rimozione e la sostituzione dei certificati da Send Connector interromperebbero il flusso di posta. Se si desidera continuare, sostituire o rimuovere questi certificati da Send Connector e quindi provare questo comando."

Screenshot dell'errore visualizzato quando si tenta di rimuovere un certificato di trasporto associato a un connettore di invio.

Il problema si verifica se il nuovo certificato ha lo stesso nome dell'autorità di certificazione e lo stesso nome soggetto usati dal certificato precedente.

Causa

Per evitare interruzioni del flusso di posta, Exchange Server impedisce la rimozione di un certificato se il nome dell'autorità di certificazione e il nome del soggetto sono specificati nella proprietà TlsCertificateName di qualsiasi connettore di invio. Il formato del valore della TlsCertificateName proprietà è "<I>IssuerName<S>SubjectName". Se il TlsCertificateName valore corrisponde sia al vecchio che al nuovo certificato, Exchange Server impedirà la rimozione di entrambi i certificati.

Risoluzione

Per rimuovere il certificato precedente, seguire questa procedura. Se non diversamente specificato, eseguire i comandi di PowerShell seguenti in Exchange Management Shell (EMS).

  1. Ottenere le identificazioni personali dei certificati nuovi e precedenti. A tale scopo, ottenere un elenco di tutti i certificati Exchange Server eseguendo il comando seguente. Identificare quindi i certificati nuovi e precedenti nell'elenco.

    Get-ExchangeCertificate | Format-List FriendlyName,Subject,Issuer,CertificateDomains,Thumbprint,NotBefore,NotAfter
    
  2. Per ogni connettore di invio segnalato nel messaggio di errore, usare il cmdlet Get-SendConnector per compilare un elenco aggregato di server di trasporto di origine associati:

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

    In alternativa, identificare i server di trasporto di origine nell'interfaccia di amministrazione di Exchange come indicato di seguito:

    1. Passare a Flusso> di postaConnettori di invio.

    2. Per ogni connettore di invio segnalato nel messaggio di errore:

      1. Fare doppio clic per aprire il connettore.

      2. Passare alserverdi origine dell'ambito> per visualizzare i server associati a tale connettore.

  3. Per ridurre al minimo i problemi relativi al flusso di posta durante questa procedura, arrestare il servizio Trasporto di Microsoft Exchange eseguendo il comando seguente in ogni server di trasporto di origine rilevato nel passaggio 2. Il comando non deve essere eseguito in EMS, ma richiede una sessione di PowerShell con privilegi elevati.

    Stop-Service MSExchangeTransport
    

    In alternativa, arrestare il servizio Trasporto di Microsoft Exchange usando lo snap-in Services.msc in ogni server di trasporto di origine.

    Nota

    Dopo aver arrestato il servizio di trasporto, il flusso di posta in ogni server di trasporto di origine viene arrestato fino a quando non si riavvia il servizio Trasporto di Microsoft Exchange nel passaggio finale di questa procedura. Per altre informazioni sul flusso di posta in Exchange Server, vedere Code e messaggi nelle code.

  4. Per ogni connettore di invio segnalato nel messaggio di errore, usare il cmdlet Set-SendConnector per cancellare la relativa TlsCertificateName proprietà:

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

    Nota

    Se si dispone di un ambiente di grandi dimensioni che usa siti diversi, potrebbe essere necessario forzare la replica di Active Directory a rimuovere completamente il valore della TlsCertificateName proprietà nei server di trasporto di origine interessati.

  5. Per ogni server di trasporto di origine trovato nel passaggio 2, rimuovere il certificato precedente eseguendo il comando seguente:

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

    In alternativa, è possibile rimuovere il certificato precedente nell'interfaccia di amministrazione di Exchange come indicato di seguito:

    1. Passare a Certificati server>.

    2. Per ogni server di trasporto di origine trovato nel passaggio 2:

      1. Selezionare il server.

      2. Selezionare il certificato precedente e quindi eliminarlo.

    Nota

    Se non si rimuove il certificato precedente da tutti i server di trasporto di origine applicabili prima di riassegnare il valore della TlsCertificateName proprietà, sarà necessario ripetere la procedura di risoluzione per rimuovere le istanze rimanenti del certificato precedente.

  6. Generare il valore della TlsCertificateName proprietà eseguendo i comandi seguenti:

    $cert = Get-ExchangeCertificate -Thumbprint <new certificate thumbprint>
    $tlscertificatename = "<i>$($cert.Issuer)<s>$($cert.Subject)"
    
  7. Per ogni connettore di invio segnalato nel messaggio di errore, eseguire il comando seguente per assegnare il valore della TlsCertificateName proprietà generato nel passaggio 6:

    Set-SendConnector -Identity <connector name> -TlsCertificateName $tlscertificatename
    
  8. Riavviare il servizio Trasporto di Microsoft Exchange eseguendo il comando seguente in ogni server di trasporto di origine trovato nel passaggio 2. Il comando non deve essere eseguito in EMS, ma richiede una sessione di PowerShell con privilegi elevati.

    Start-Service MSExchangeTransport
    

    In alternativa, è possibile avviare il servizio Trasporto di Microsoft Exchange nello snap-in Services.msc in ogni server di trasporto di origine.

Ulteriori informazioni

Per determinare il certificato usato da un connettore di invio o ricezione, seguire questa procedura:

  1. Abilitare la registrazione del protocollo per il connettore. Per altre informazioni sulla registrazione dei protocolli, vedere Registrazione del protocollo in Exchange Server.

  2. Aprire il file di log del protocollo più recente per il connettore. È possibile determinare il percorso della cartella di log applicabile eseguendo il comando seguente in EMS:

    Get-TransportService | Format-List Identity,*ProtocolLogPath
    
  3. Nel file di log del protocollo trovare le informazioni sul certificato per il connettore cercando una voce che inizia con "Invio di certificato" nella context colonna . Le informazioni sul certificato si trova nella data colonna della stessa riga. Il formato delle informazioni sul certificato è "Subject>Issuer><SerialNumber><Thumbprint><NotBefore><NotAfter><CertificateDomains>".<<

    È possibile trovare il certificato di Exchange Server corrispondente eseguendo il comando seguente in EMS:

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

Per altre informazioni sulla gestione dei certificati, vedere Procedure dei certificati in Exchange Server.