System.Net.CertificatePolicy для ServerCertificateValidationCallback Принять все политики сертификатов

Я загрузил некоторый пример кода, который немного устарел. Он имеет следующий класс:

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;
    }
}

далее в коде он вызывает следующее:

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

Он дает следующее предупреждение:

Предупреждение 1 'System.Net.ServicePointManager.CertificatePolicy' устарело: 'CertificatePolicy устарела для этого типа, вместо этого используйте ServerCertificateValidationCallback. http://go.microsoft.com/fwlink/?linkid=14202 '

Какова текущая процедура для получения эквивалентных функций?

Я прочитал статью в MSDN, но я не уверен, как ее конвертировать? Это для библиотеки классов. Я приговариваю, если мне кажется, что я не исследовал это достаточно, но когда дело доходит до сертификатов ssl, это немного из моей сферы. Любая помощь очень ценится!

Ответ 1

Включите в свой класс следующий класс

 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;
            }
        }

Затем вызовите следующее, прежде чем выполнять служебный вызов, но будьте осторожны, чтобы удалить этот код при создании, когда у вас есть настоящие сертификаты

SSLValidator.OverrideValidation();  

Или вы можете сделать следующее, чтобы использовать его только для отладки

#if DEBUG

            SSLValidator.OverrideValidation();
#endif 

Ответ 2

Я использую следующее при подключении к другим веб-сервисам.

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

за комментарии, которые я должен добавить к рекламе - НЕ ДЕЛАЙТЕ ЭТОГО В ПРОИЗВОДСТВЕ (если вы это сделаете - отправьте $ 500 на мой счет PayPal)