Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Differenze di convalida del certificato tra HTTPS, SSL su TCP e protezione SOAP

Oltre alla protezione a livello di trasporto (TSP) su HTTP (HTTPS) o TCP, in Windows Communication Foundation (WCF) è possibile utilizzare certificati con la protezione a livello dei messaggi (SOAP). In questo argomento vengono descritte le differenze nella modalità di convalida dei certificati.

In caso di utilizzo di HTTPS per la comunicazione tra un client e un servizio, il certificato utilizzato dal client per autenticare il servizio deve supportare la catena di certificati, ovvero deve concatenarsi a un'Autorità di certificazione radice attendibile. In caso contrario, il livello HTTP genera un'eccezione WebException con il messaggio "Errore del server remoto: (403) non consentito". In WCF questa eccezione assume la forma di MessageSecurityException.

In caso di utilizzo di HTTPS per la comunicazione tra un client e un servizio, il certificato autenticato dal server deve supportare la catena di certificati per impostazione predefinita, ovvero deve concatenarsi a un'Autorità di certificazione radice attendibile. Non viene eseguito alcun controllo in linea per appurare se il certificato è stato revocato. È possibile eseguire l'override di questo comportamento registrando un callback RemoteCertificateValidationCallback, come illustrato nel codice seguente.


ServicePointManager.ServerCertificateValidationCallback +=
    new RemoteCertificateValidationCallback(ValidateServerCertificate);


dove la firma per ValidateServerCertificate è come segue:


public static bool ValidateServerCertificate(
  object sender,
  X509Certificate certificate,
  X509Chain chain,
  SslPolicyErrors sslPolicyErrors)


L'implementazione di ValidateServerCertificate può eseguire qualsiasi controllo che lo sviluppatore dell'applicazione client ritenga necessario per convalidare il certificato del servizio.

Quando si utilizza SSL (Secure Sockets Layer) su TCP o la protezione dei messaggi (SOAP), i certificati client vengono convalidati secondo il valore della proprietà CertificateValidationMode della classe X509ClientCertificateAuthentication. La proprietà è impostata su uno dei valori X509CertificateValidationMode. La verifica della revoca viene eseguita secondo i valori del valore della proprietà RevocationMode della classe X509ClientCertificateAuthentication. La proprietà è impostata su uno dei valori X509RevocationMode.


myServiceHost.Credentials.ClientCertificate.Authentication.
    CertificateValidationMode=
    X509CertificateValidationMode.PeerOrChainTrust;       

myServiceHost.Credentials.ClientCertificate.Authentication.
    RevocationMode=X509RevocationMode.Offline; 


Quando si utilizza SSL su TCP o la protezione dei messaggi (SOAP), i certificati del servizio vengono convalidati secondo il valore della proprietà CertificateValidationMode della classe X509ServiceCertificateAuthentication. La proprietà è impostata su uno dei valori X509CertificateValidationMode.

La verifica della revoca viene eseguita secondo i valori del valore della proprietà RevocationMode della classe X509ServiceCertificateAuthentication. La proprietà è impostata su uno dei valori X509RevocationMode.


myClient.ClientCredentials.ServiceCertificate.
    Authentication.CertificateValidationMode=
    X509CertificateValidationMode.PeerOrChainTrust;
myClient.ClientCredentials.ServiceCertificate.Authentication.
    RevocationMode = X509RevocationMode.Offline;


Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft