Unterschiede bei der Zertifikatsvalidierung zwischen HTTPS, SSL über TCP und SOAP-SicherheitCertificate Validation Differences Between HTTPS, SSL over TCP, and SOAP Security

Sie können in Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) Zertifikate mit Sicherheit (SOAP) auf Nachrichtenebene neben der Transport Layer Security (TLS) über HTTP (HTTPS) oder TCP verwenden.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. In diesem Thema werden die Unterschiede bei der Überprüfung solcher Zertifikate beschrieben.This topic describes differences in the way such certificates are validated.

Validierung der HTTPS-ClientzertifikateValidation of HTTPS Client Certificates

Wenn Sie HTTPS zur Kommunikation zwischen einem Client und einem Dienst verwenden, muss das Zertifikat, das der Client zur Authentifizierung für den Dienst verwendet, Vertrauensketten unterstützen.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 muss eine Verkettung zu einer vertrauenswerten Stammzertifizierungsstelle herstellen,That is, it must chain to a trusted root certificate authority. anderenfalls gibt die HTTP-Ebene eine WebException mit der Meldung "Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig" aus.If not, the HTTP layer raises a WebException with the message "The remote server returned an error: (403) Forbidden." WCFWCF gibt diese Ausnahme als MessageSecurityException aus. surfaces this exception as a MessageSecurityException.

Validierung der HTTPS-DienstzertifikateValidation of HTTPS Service Certificates

Wenn Sie HTTPS zur Kommunikation zwischen einem Client und einem Dienst verwenden, muss das Zertifikat, mit dem der Server die Authentifizierung durchführt, standardmäßig Vertrauensketten unterstützen.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 muss eine Verkettung zu einer vertrauenswerten Stammzertifizierungsstelle herstellen,That is, it must chain to a trusted root certificate authority. Es wird keine Online-Überprüfung durchgeführt, um herauszufinden, ob das Zertifikat widerrufen wurde.No online check is performed to see whether the certificate has been revoked. Sie können dieses Verhalten auch überschreiben, indem Sie einen RemoteCertificateValidationCallback-Rückruf registrieren, wie mit dem nachfolgenden Code dargestellt.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)

Die Signatur für ValidateServerCertificate sieht folgendermaßen aus: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

Durch die Implementierung des ValidateServerCertificate können beliebige Überprüfungen durchgeführt werden, die der Entwickler der Clientanwendung für notwendig erachtet, um das Dienstzertifikat zu überprüfen.Implementing ValidateServerCertificate can perform any checks that the client application developer deems necessary to validate the service certificate.

Validierung der Clientzertifikate in SSL-über-TCP-Sicherheit oder SOAP-SicherheitValidation of Client Certificates in SSL over TCP or SOAP Security

Wenn Sie Secure Sockets Layer (SSL) über TCP oder die Nachrichtensicherheit (SOAP) verwenden, werden Clientzertifikate anhand des CertificateValidationMode-Eigenschaftswerts der X509ClientCertificateAuthentication-Klasse überprüft.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. Die Eigenschaft wird auf einen der X509CertificateValidationMode-Werte festgelegt.The property is set to one of the X509CertificateValidationMode values. Die Sperrüberprüfung kann anhand der Werte des RevocationMode-Eigenschaftswerts der X509ClientCertificateAuthentication-Klasse durchgeführt werden.Revocation checking is performed according to the values of the RevocationMode property value of the X509ClientCertificateAuthentication class. Die Eigenschaft wird auf einen der X509RevocationMode-Werte festgelegt.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

Validierung der Dienstzertifikate in SSL-über-TCP-Sicherheit und SOAP-SicherheitValidation of Service Certificate in SSL over TCP and SOAP Security

Wenn Sie SSL über TCP oder die (SOAP)-Nachrichtensicherheit verwenden, werden Dienstzertifikate anhand des CertificateValidationMode-Eigenschaftswerts der X509ServiceCertificateAuthentication-Klasse überprüft.When using SSL over TCP or (SOAP) message security, service certificates are validated according to the CertificateValidationMode property value of the X509ServiceCertificateAuthentication class. Die Eigenschaft wird auf einen der X509CertificateValidationMode-Werte festgelegt.The property is set to one of the X509CertificateValidationMode values.

Die Sperrüberprüfung kann anhand der Werte des RevocationMode-Eigenschaftswerts der X509ServiceCertificateAuthentication-Klasse durchgeführt werden.Revocation checking is performed according to the values of the RevocationMode property value of the X509ServiceCertificateAuthentication class. Die Eigenschaft wird auf einen der X509RevocationMode-Werte festgelegt.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

Siehe auchSee Also

RemoteCertificateValidationCallback
Arbeiten mit ZertifikatenWorking with Certificates