Aracılığıyla paylaş


HTTPS, TCP üzerinden SSL ve SOAP Güvenliği Arasındaki Sertifika Doğrulama Farkları

Windows Communication Foundation'daki (WCF) sertifikaları, HTTP (HTTPS) veya TCP üzerinden aktarım katmanı güvenliğine (TLS) ek olarak ileti katmanı (SOAP) güvenliğiyle birlikte kullanabilirsiniz. Bu konuda, bu tür sertifikaların doğrulanmasındaki farklılıklar açıklanmaktadır.

HTTPS İstemci Sertifikalarının Doğrulanması

İstemci ile hizmet arasında iletişim kurmak için HTTPS kullanırken, istemcinin hizmette kimlik doğrulaması yapmak için kullandığı sertifika zincir güvenini desteklemelidir. Yani, güvenilir bir kök sertifika yetkilisine zincirlenmelidir. Aksi takdirde, HTTP katmanı "Uzak sunucu bir hata döndürdü: (403) Yasak" iletisiyle bir WebException oluşturur. WCF bu özel durumu olarak MessageSecurityExceptionortaya çıkar.

HTTPS Hizmet Sertifikalarının Doğrulanması

İstemci ve hizmet arasında iletişim kurmak için HTTPS kullanırken, sunucunun kimlik doğrulaması yaptığı sertifika varsayılan olarak zincir güvenini desteklemelidir. Yani, güvenilir bir kök sertifika yetkilisine zincirlenmelidir. Sertifikanın iptal edilip edilmediğini görmek için çevrimiçi denetim yapılmaz. Aşağıdaki kodda gösterildiği gibi bir RemoteCertificateValidationCallback geri çağırma kaydederek bu davranışı geçersiz kılabilirsiniz.

ServicePointManager.ServerCertificateValidationCallback +=
    new RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)

ValidateServerCertificate için imza aşağıdaki gibidir:

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

Uygulama, ValidateServerCertificate istemci uygulama geliştiricisinin hizmet sertifikasını doğrulamak için gerekli gördüğü tüm denetimleri gerçekleştirebilir.

TCP veya SOAP Güvenliği üzerinden SSL'de İstemci Sertifikalarının Doğrulanması

TCP veya ileti (SOAP) güvenliği üzerinden Güvenli Yuva Katmanı (SSL) kullanılırken, istemci sertifikaları sınıfın CertificateValidationModeX509ClientCertificateAuthentication özellik değerine göre doğrulanır. özelliği değerlerden birine X509CertificateValidationMode ayarlanır. İptal denetimi, sınıfın özellik değerinin RevocationModeX509ClientCertificateAuthentication değerlerine göre gerçekleştirilir. özelliği değerlerden birine X509RevocationMode ayarlanır.

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

TCP ve SOAP Güvenliği Üzerinden SSL'de Hizmet Sertifikası Doğrulama

TCP veya (SOAP) ileti güvenliği üzerinden SSL kullanıldığında, hizmet sertifikaları sınıfın CertificateValidationMode özellik değerine X509ServiceCertificateAuthentication göre doğrulanır. özelliği değerlerden birine X509CertificateValidationMode ayarlanır.

İptal denetimi, sınıfın özellik değerinin RevocationModeX509ServiceCertificateAuthentication değerlerine göre gerçekleştirilir. özelliği değerlerden birine X509RevocationMode ayarlanır.

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

Ayrıca bakınız