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)