Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Communication Foundation (WCF) tanúsítványait üzenetrétegi (SOAP) biztonsággal használhatja a http (HTTPS) vagy TCP protokollon keresztüli átviteli rétegbeli biztonság (TLS) mellett. Ez a témakör az ilyen tanúsítványok érvényesítésének különbségeit ismerteti.
HTTPS-ügyféltanúsítványok érvényesítése
Amikor HTTPS-t használ az ügyfél és a szolgáltatás közötti kommunikációhoz, az ügyfél által a szolgáltatásban való hitelesítéshez használt tanúsítványnak támogatnia kell a lánc megbízhatóságát. Vagyis megbízható főtanúsítvány-szolgáltatóhoz kell kapcsolódnia. Ha nem, a HTTP-réteg kivételt emel a következő üzenettel: "A távoli kiszolgáló hibát adott vissza: (403) Tiltott." A WCF ezt a kivételt WebException-ként jeleníti meg.
HTTPS-szolgáltatástanúsítványok érvényesítése
Ha HTTPS használatával kommunikál egy ügyfél és egy szolgáltatás között, a kiszolgáló által hitelesített tanúsítványnak alapértelmezés szerint támogatnia kell a lánc megbízhatóságát. Vagyis megbízható főtanúsítvány-szolgáltatóhoz kell kapcsolódnia. Nem történik online ellenőrzés annak ellenőrzéséhez, hogy visszavonták-e a tanúsítványt. Ezt a viselkedést felülbírálhatja egy RemoteCertificateValidationCallback visszahívás regisztrálásával, ahogy az az alábbi kódban is látható.
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)
ahol az aláírás ValidateServerCertificate a következő:
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
Az ValidateServerCertificate implementálása bármilyen ellenőrzést elvégezhet, amelyet az ügyfélalkalmazás fejlesztője szükségesnek tart a szolgáltatási tanúsítvány érvényesítéséhez.
Ügyféltanúsítványok érvényesítése SSL-ben TCP- vagy SOAP-biztonságon keresztül
A Secure Sockets Layer (SSL) TCP- vagy üzenetbiztonsági (SOAP) használata esetén az ügyféltanúsítványok az CertificateValidationMode osztály tulajdonságértékének X509ClientCertificateAuthentication megfelelően lesznek érvényesítve. A tulajdonság az egyik X509CertificateValidationMode értékre van állítva. A visszavonás ellenőrzése az osztály tulajdonságértékének RevocationModeX509ClientCertificateAuthentication értékei szerint történik. A tulajdonság az egyik X509RevocationMode értékre van állítva.
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
Szolgáltatástanúsítvány érvényesítése SSL-ben TCP-en és SOAP-biztonságon keresztül
Amikor SSL-t használ a TCP felett vagy (SOAP) üzenetbiztonság esetén, a szolgáltatás tanúsítványok az CertificateValidationMode osztály tulajdonságértékének X509ServiceCertificateAuthentication megfelelően lesznek érvényesítve. A tulajdonság az egyik X509CertificateValidationMode értékre van állítva.
A visszavonás ellenőrzése az osztály tulajdonságértékének RevocationModeX509ServiceCertificateAuthentication értékei szerint történik. A tulajdonság az egyik X509RevocationMode értékre van állítva.
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