Как использовать WebRequest для доступа к сайту, зашифрованному с помощью SSL, по протоколу https? - PullRequest
103 голосов
/ 18 февраля 2009

Я пишу программу, которая читает контент с предоставленного пользователем URL. Моя проблема в коде, который выглядит примерно так:

Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());

И это не работает, если предоставленный url является URL-адресом "https://"". Может ли кто-нибудь помочь мне изменить этот код, чтобы он работал с зашифрованным контентом SSL. Спасибо.

Ответы [ 3 ]

166 голосов
/ 18 февраля 2009

Вы делаете это правильно, но пользователи могут предоставлять URL-адреса сайтам, на которых установлены недействительные сертификаты SSL. Вы можете проигнорировать эти проблемы с сертификатом, если вы введете эту строку перед тем, как сделать настоящий веб-запрос:

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);

, где AcceptAllCertifications определяется как

public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
    return true;
}
18 голосов
/ 18 февраля 2009

Эта ссылка будет вам интересна: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx

Для соединений http классы WebRequest и WebResponse используют SSL для связи с веб-хостами, которые поддерживают SSL. Решение об использовании SSL принимается классом WebRequest на основе предоставленного ему URI. Если URI начинается с «https:», используется SSL; если URI начинается с «http:», используется незашифрованное соединение.

13 голосов
/ 05 января 2017

Этот работал для меня:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...