Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Zertifikate in Windows Communication Foundation (WCF) mit SOAP-Sicherheit (Message-Layer) zusätzlich zur Transportebenensicherheit (TLS) über HTTP (HTTPS) oder TCP verwenden. In diesem Thema werden Unterschiede in der Art und Weise beschrieben, wie diese Zertifikate überprüft werden.
Validierung von HTTPS-Clientzertifikaten
Wenn Https für die Kommunikation zwischen einem Client und einem Dienst verwendet wird, muss das Zertifikat, das der Client für die Authentifizierung beim Dienst verwendet, die Vertrauenskette unterstützen. Es muss eine Verkettung zu einer vertrauenswerten Stammzertifizierungsstelle herstellen, anderenfalls gibt die HTTP-Ebene eine WebException mit der Meldung „Der Remoteserver hat einen Fehler zurückgegeben: (403) Unzulässig“ aus. WCF gibt diese Ausnahme als MessageSecurityException aus.
Validierung von HTTPS-Dienstzertifikaten
Bei Verwendung von HTTPS für die Kommunikation zwischen einem Client und einem Dienst muss das Zertifikat, mit dem der Server authentifiziert wird, standardmäßig die Kettenvertrauensstellung unterstützen. Es muss eine Verkettung zu einer vertrauenswerten Stammzertifizierungsstelle herstellen, Es wird keine Onlineüberprüfung durchgeführt, um festzustellen, ob das Zertifikat widerrufen wurde. Sie können dieses Verhalten außer Kraft setzen, indem Sie einen RemoteCertificateValidationCallback Rückruf registrieren, wie im folgenden Code gezeigt.
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
wobei die Signatur ValidateServerCertificate
wie folgt lautet:
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
Die Implementierung ValidateServerCertificate
kann alle Überprüfungen durchführen, die der Clientanwendungsentwickler für die Überprüfung des Dienstzertifikats als erforderlich erachtet.
Überprüfung von Clientzertifikaten im Rahmen von SSL über TCP oder im Rahmen der Sicherheit bei SOAP
Bei Verwendung von SSL (Secure Sockets Layer) über TCP- oder MESSAGE-Sicherheit (SOAP) werden Clientzertifikate entsprechend dem CertificateValidationMode Eigenschaftswert der X509ClientCertificateAuthentication Klasse überprüft. Die Eigenschaft wird auf einen der X509CertificateValidationMode Werte festgelegt. Die Sperrüberprüfung erfolgt entsprechend den Werten des RevocationMode Eigenschaftswerts der X509ClientCertificateAuthentication Klasse. Die Eigenschaft wird auf einen der X509RevocationMode Werte festgelegt.
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 des Dienstzertifikats bei SSL über TCP und SOAP-Sicherheit
Bei Verwendung von SSL über TCP oder (SOAP)-Nachrichtensicherheit werden Dienstzertifikate entsprechend dem CertificateValidationMode Eigenschaftswert der X509ServiceCertificateAuthentication Klasse überprüft. Die Eigenschaft wird auf einen der X509CertificateValidationMode Werte festgelegt.
Die Sperrüberprüfung erfolgt entsprechend den Werten des RevocationMode Eigenschaftswerts der X509ServiceCertificateAuthentication Klasse. Die Eigenschaft wird auf einen der X509RevocationMode Werte festgelegt.
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