Подключение по HTTPS (SSL) - TrustAllCertificatePolicy
- modified:
- reading: 1 minutes
Когда подключаетесь по HTTPS (SSL) к веб-ресурсу – можно получить такую ошибку:
"The underlying connection was closed: Could not establish trust relationship with remote server."
Дело может быть в том, что сервер использует либо просроченный сертификат, либо какой-то самоизданный сертификат, сертификат УЦ которого не установлен на вашем компьютере, либо сертификат выдан на DNS имя, а подключаетесь вы по IP. В общем, причин может быть масса. Когда вы открываете веб-сайт через браузер – он вам предложит на выбор: открыть соединение или нет, программно так вам никто не сделает само собой. Проблему эту можно обойти при помощи свойства ServicePointManager.CertificatePolicy и интерфейса ICertificatePolicy. Пишем свой Policy, очень простой:
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertificatePolicy : ICertificatePolicy
{
public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert, WebRequest req, int problem)
{
return true;
}
}
Затем перед использованием веб-ресурсов выставляем это Policy по умолчанию:
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();