2013-08-26 13 views
9

Pobrałem przykładowy kod, który jest nieco nieaktualny. Posiada następujące klasy:System.Net.CertificatePolicy to ServerCertificateValidationCallback Zaakceptuj wszystkie zasady dotyczące certyfikatów

public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy 
{ 
    public TrustAllCertificatePolicy() 
    { } 

    public bool CheckValidationResult(ServicePoint sp, 
       System.Security.Cryptography.X509Certificates.X509Certificate cert, 
       WebRequest req, 
       int problem) 
    { 
     return true; 
    } 
} 

później w kodzie wywołuje następujące:

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 

To daje następujące ostrzeżenie:

Warning 1 „System.Net.ServicePointManager .CertificatePolicy "jest przestarzały:" CertificatePolicy jest przestarzała dla tego typu, użyj zamiast tego ServerCertificateValidationCallback. http://go.microsoft.com/fwlink/?linkid=14202 '

Jaka jest obecna procedura w celu uzyskania równoważnej funkcjonalności?

Czytałem article na MSDN, ale nie jestem pewien, jak przekonwertować? Dotyczy biblioteki klas. Przepraszam, jeśli wydaje mi się, że nie zbadałem tego wystarczająco, ale jeśli chodzi o certyfikaty ssl, to jest trochę poza moim królestwem. Każda pomoc jest bardzo cenna!

+1

Wygląda używamy tego samego przykładowy kod, dzięki za zaproszenie :) – CularBytes

Odpowiedz

14

obejmują następujące klasy w kodzie

public static class SSLValidator 
     { 
      private static bool OnValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, 
                 SslPolicyErrors sslPolicyErrors) 
      { 
       return true; 
      } 
      public static void OverrideValidation() 
      { 
       ServicePointManager.ServerCertificateValidationCallback = 
        OnValidateCertificate; 
       ServicePointManager.Expect100Continue = true; 
      } 
     } 

Następnie należy zadzwonić pod następujące przed dokonaniem zgłoszenia serwisowego, ale należy uważać, aby usunąć ten kod na produkcji, kiedy masz prawdziwe certyfikatów

SSLValidator.OverrideValidation(); 

Or możesz wykonać następujące czynności, aby użyć go tylko do debugowania:

#if DEBUG 

      SSLValidator.OverrideValidation(); 
#endif 
+0

To rozwiązanie nie ma żadnych negatywnych skutków stosowania. Dziękuję za Twoją odpowiedź. – Oxymoron

+0

Czy mógłbyś wyjaśnić ostatnią linijkę kodu w klasie "SSLValidator". część "ServicePointManager.Expect100Continue". Co to jest "Expect100Continue"? – Oxymoron

+1

Masz szczegółowe wyjaśnienie tutaj: http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.expect100continue.aspx –

2

Używam podczas łączenia się z innymi usługami sieciowymi.

//workaround for SSL certificate issue 
ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => { return true; }; 
Powiązane problemy