Diferencias en la validación de certificados entre HTTPS, SSL a través de TCP, y seguridad SOAPCertificate Validation Differences Between HTTPS, SSL over TCP, and SOAP Security

Puede utilizar los certificados en Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) con seguridad de la capa del mensaje (SOAP) además de la seguridad de la capa de transporte (TLS) a través de HTTP (HTTPS) o TCP.You can use certificates in Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) with message-layer (SOAP) security in addition to transport-layer security (TLS) over HTTP (HTTPS) or TCP. En este tema se describen las diferencias en la manera como se validan tales certificados.This topic describes differences in the way such certificates are validated.

Validación de certificados de cliente HTTPSValidation of HTTPS Client Certificates

Al utilizar HTTPS para comunicarse entre un cliente y un servicio, el certificado que el cliente utiliza para autenticar al servicio debe soportar la confianza de la cadena.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. Es decir, debe encadenar a una entidad de certificación raíz de confianza.That is, it must chain to a trusted root certificate authority. Si no, el nivel HTTP inicia una excepción WebException con el mensaje "Error en el servidor remoto: (403) Prohibido".If not, the HTTP layer raises a WebException with the message "The remote server returned an error: (403) Forbidden." WCFWCF manifiesta esta excepción como MessageSecurityException. surfaces this exception as a MessageSecurityException.

Validación de certificados de servicio HTTPSValidation of HTTPS Service Certificates

Al utilizar HTTPS para comunicarse entre un cliente y un servicio, el certificado con el que se autentica el servidor debe soportar la confianza de la cadena.When using HTTPS to communicate between a client and a service, the certificate that the server authenticates with must support chain trust by default. Es decir, debe encadenar a una entidad de certificación raíz de confianza.That is, it must chain to a trusted root certificate authority. No se realiza ninguna comprobación para ver si se ha revocado el certificado.No online check is performed to see whether the certificate has been revoked. Puede invalidar este comportamiento registrando una devolución de llamada RemoteCertificateValidationCallback, como se muestra en el código siguiente.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)

donde la firma para ValidateServerCertificate es como sigue: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

Al implementar ValidateServerCertificate, se puede realizar cualquier comprobación que el programador de la aplicación cliente juzgue necesaria para validar el certificado del servicio.Implementing ValidateServerCertificate can perform any checks that the client application developer deems necessary to validate the service certificate.

La validación de certificados de cliente en SSL a través TCP o seguridad SOAPValidation of Client Certificates in SSL over TCP or SOAP Security

Al utilizar Capa de sockets seguros (SSL) a través TCP o seguridad de mensajes (SOAP), los certificados de cliente se validan según el valor de propiedad CertificateValidationMode de la clase 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 propiedad está establecida en uno de los valores X509CertificateValidationMode.The property is set to one of the X509CertificateValidationMode values. La comprobación de la revocación se realiza según los valores del valor de propiedad RevocationMode de la clase X509ClientCertificateAuthentication.Revocation checking is performed according to the values of the RevocationMode property value of the X509ClientCertificateAuthentication class. La propiedad está establecida en uno de los valores 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

La validación del certificado de servicio en SSL a través TCP y seguridad SOAPValidation of Service Certificate in SSL over TCP and SOAP Security

Al utilizar SSL a través de TCP o seguridad de mensajes (SOAP), los certificados de servicio se validan de acuerdo con el valor de propiedad CertificateValidationMode de la clase 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 propiedad está establecida en uno de los valores X509CertificateValidationMode.The property is set to one of the X509CertificateValidationMode values.

La comprobación de la revocación se realiza según los valores del valor de propiedad RevocationMode de la clase X509ServiceCertificateAuthentication.Revocation checking is performed according to the values of the RevocationMode property value of the X509ServiceCertificateAuthentication class. La propiedad está establecida en uno de los valores 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

Vea tambiénSee Also

RemoteCertificateValidationCallback
Trabajo con certificadosWorking with Certificates