Differenze di convalida del certificato tra HTTPS, SSL su TCP e protezione SOAPCertificate Validation Differences Between HTTPS, SSL over TCP, and SOAP Security

Utilizzare i certificati in Windows Communication Foundation (WCF) con sicurezza a livello di messaggio (SOAP) oltre alla sicurezza a livello di trasporto (TLS) su HTTP (HTTPS) o TCP.You can use certificates in Windows Communication Foundation (WCF) with message-layer (SOAP) security in addition to transport-layer security (TLS) over HTTP (HTTPS) or TCP. In questo argomento vengono descritte le differenze nella modalità di convalida dei certificati.This topic describes differences in the way such certificates are validated.

Convalida di certificati di client HTTPSValidation of HTTPS Client Certificates

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,When using HTTPS to communicate between a client and a service, the certificate that the client uses to authenticate to the service must support chain trust. ovvero deve concatenarsi a un'Autorità di certificazione radice attendibile.That is, it must chain to a trusted root certificate authority. In caso contrario, il livello HTTP genera un'eccezione WebException con il messaggio "Errore del server remoto: (403) non consentito".If not, the HTTP layer raises a WebException with the message "The remote server returned an error: (403) Forbidden." WCF espone questa eccezione come una MessageSecurityException.WCF surfaces this exception as a MessageSecurityException.

Convalida di certificati di servizi HTTPSValidation of HTTPS Service Certificates

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,When using HTTPS to communicate between a client and a service, the certificate that the server authenticates with must support chain trust by default. ovvero deve concatenarsi a un'Autorità di certificazione radice attendibile.That is, it must chain to a trusted root certificate authority. Non viene eseguito alcun controllo in linea per appurare se il certificato è stato revocato.No online check is performed to see whether the certificate has been revoked. È possibile eseguire l'override di questo comportamento registrando un callback RemoteCertificateValidationCallback, come illustrato nel codice seguente.You can override this behavior by registering a RemoteCertificateValidationCallback callback, as shown in the following code.

ServicePointManager.ServerCertificateValidationCallback +=
    new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)

dove la firma per ValidateServerCertificate è come segue:where the signature for ValidateServerCertificate is as follows:

public static bool ValidateServerCertificate(
  object sender,
  X509Certificate certificate,
  X509Chain chain,
  SslPolicyErrors sslPolicyErrors)
Public Shared Function ValidateServerCertificate(ByVal sender As Object, _
                                                 ByVal certificate As X509Certificate, _
                                                 ByVal chain As X509Chain, _
                                                 ByVal sslPolicyErrors As SslPolicyErrors) As Boolean

L'implementazione di ValidateServerCertificate può eseguire qualsiasi controllo che lo sviluppatore dell'applicazione client ritenga necessario per convalidare il certificato del servizio.Implementing ValidateServerCertificate can perform any checks that the client application developer deems necessary to validate the service certificate.

Convalida di certificati client in SSL su TCP o protezione SOAPValidation of Client Certificates in SSL over TCP or SOAP Security

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.When using Secure Sockets Layer (SSL) over TCP or message (SOAP) security, client certificates are validated according to the CertificateValidationMode property value of the X509ClientCertificateAuthentication class. La proprietà è impostata su uno dei valori X509CertificateValidationMode.The property is set to one of the X509CertificateValidationMode values. La verifica della revoca viene eseguita secondo i valori del valore della proprietà RevocationMode della classe X509ClientCertificateAuthentication.Revocation checking is performed according to the values of the RevocationMode property value of the X509ClientCertificateAuthentication class. La proprietà è impostata su uno dei valori X509RevocationMode.The property is set to one of the X509RevocationMode values.

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

myServiceHost.Credentials.ClientCertificate.Authentication.
    RevocationMode=X509RevocationMode.Offline; 
With myServiceHost.Credentials.ClientCertificate.Authentication
    .CertificateValidationMode = X509CertificateValidationMode.PeerOrChainTrust
    .RevocationMode = X509RevocationMode.Offline
End With

Convalida di certificati del servizio in SSL su TCP e protezione SOAPValidation of Service Certificate in SSL over TCP and SOAP Security

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.When using SSL over TCP or (SOAP) message security, service certificates are validated according to the CertificateValidationMode property value of the X509ServiceCertificateAuthentication class. La proprietà è impostata su uno dei valori X509CertificateValidationMode.The property is set to one of the X509CertificateValidationMode values.

La verifica della revoca viene eseguita secondo i valori del valore della proprietà RevocationMode della classe X509ServiceCertificateAuthentication.Revocation checking is performed according to the values of the RevocationMode property value of the X509ServiceCertificateAuthentication class. La proprietà è impostata su uno dei valori X509RevocationMode.The property is set to one of the X509RevocationMode values.

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

Vedere ancheSee Also

RemoteCertificateValidationCallback
Uso di certificatiWorking with Certificates