Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt certificaten in Windows Communication Foundation (WCF) gebruiken met SOAP-beveiliging (message-layer) naast TLS (Transport Layer Security) via HTTP (HTTPS) of TCP. In dit onderwerp worden verschillen beschreven in de manier waarop dergelijke certificaten worden gevalideerd.
Validatie van HTTPS-clientcertificaten
Wanneer u HTTPS gebruikt om te communiceren tussen een client en een service, moet het certificaat dat de client gebruikt voor verificatie bij de service, een vertrouwensrelatie in de keten ondersteunen. Dat wil gezegd, het moet worden gekoppeld aan een vertrouwde basiscertificeringsinstantie. Als dat niet het geval is, veroorzaakt de HTTP-laag een WebException met het bericht 'De externe server heeft een fout geretourneerd: (403) Verboden.' WCF geeft deze fout weer als een MessageSecurityException.
Validatie van HTTPS-servicecertificaten
Wanneer u HTTPS gebruikt om te communiceren tussen een client en een service, moet het certificaat waarmee de server wordt geverifieerd, standaard vertrouwen in de keten ondersteunen. Dat wil gezegd, het moet worden gekoppeld aan een vertrouwde basiscertificeringsinstantie. Er wordt geen onlinecontrole uitgevoerd om te zien of het certificaat is ingetrokken. U kunt dit gedrag overschrijven door een RemoteCertificateValidationCallback callback te registreren, zoals wordt weergegeven in de volgende code.
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
waarbij de handtekening ValidateServerCertificate
als volgt is:
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
Implementeren ValidateServerCertificate
kan controles uitvoeren die de ontwikkelaar van de clienttoepassing nodig acht om het servicecertificaat te valideren.
Validatie van clientcertificaten in SSL via TCP of SOAP-beveiliging
Wanneer u SSL (Secure Sockets Layer) gebruikt via TCP- of berichtbeveiliging (SOAP), worden clientcertificaten gevalideerd op basis van de CertificateValidationMode eigenschapswaarde van de X509ClientCertificateAuthentication klasse. De eigenschap is ingesteld op een van de X509CertificateValidationMode waarden. Intrekkingscontrole wordt uitgevoerd op basis van de waarden van de RevocationMode eigenschapswaarde van de X509ClientCertificateAuthentication klasse. De eigenschap is ingesteld op een van de X509RevocationMode waarden.
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
Validatie van servicecertificaat in SSL via TCP en SOAP-beveiliging
Wanneer u SSL via TCP- of SOAP-berichtbeveiliging gebruikt, worden servicecertificaten gevalideerd op basis van de CertificateValidationMode eigenschapswaarde van de X509ServiceCertificateAuthentication klasse. De eigenschap is ingesteld op een van de X509CertificateValidationMode waarden.
Intrekkingscontrole wordt uitgevoerd op basis van de waarden van de RevocationMode eigenschapswaarde van de X509ServiceCertificateAuthentication klasse. De eigenschap is ingesteld op een van de X509RevocationMode waarden.
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