Наступні фрагменти виправлять випадок, коли з сертифікатом SSL на сервері, на який ви телефонуєте, щось не так. Наприклад, це може бути самопідписаний або ім'я хоста між сертифікатом та сервером може не збігатися.
Це небезпечно, якщо ви викликаєте сервер поза вашим безпосереднім керуванням, оскільки ви більше не можете бути впевнені, що спілкуєтесь із сервером, до якого ви думаєте, що підключений. Однак якщо ви маєте справу з внутрішніми серверами та отримуєте "правильний" сертифікат не є практичним, скористайтеся наступним, щоб повідомити веб-службі, щоб ігнорувати проблеми з сертифікатом та хоробро брати участь у службі.
Перші два використовують лямбда-вирази, треті використовують регулярний код. Перший приймає будь-який сертифікат. Останні два принаймні перевіряють, чи є ім'я хоста в сертифікаті саме те, що ви очікуєте.
... сподіваємось, ви вважаєте це корисним
//Trust all certificates
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
// trust sender
System.Net.ServicePointManager.ServerCertificateValidationCallback
= ((sender, cert, chain, errors) => cert.Subject.Contains("YourServerName"));
// validate cert by calling a function
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
// callback used to validate the certificate in an SSL conversation
private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors)
{
bool result = cert.Subject.Contains("YourServerName");
return result;
}