Как использовать WebRequest для доступа к зашифрованному сайту SSL с помощью https?
Я пишу программу, которая читает содержимое из URL-адреса, предоставленного пользователем. Моя проблема заключается в коде, который идет примерно так:
Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
WebResponse webResponse = webRequest.GetResponse();
ReadFrom(webResponse.GetResponseStream());
и это нарушение, если предоставленные url - это URL-адрес" https://". Может ли кто-нибудь помочь мне с изменением этого кода, чтобы он работал с зашифрованным контентом SSL. Спасибо.
3 ответа:
Вы делаете это правильно, но пользователи могут предоставлять URL-адреса для сайтов, на которых установлены недействительные сертификаты ssl. Вы можете игнорировать эти проблемы cert, если вы поместите эту строку перед тем, как сделать фактический веб-запрос:
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; }
эта ссылка будет Вам интересна: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx
для http-соединений классы WebRequest и WebResponse используют SSL для связи с веб-узлами, поддерживающими SSL. Решение об использовании SSL принимается классом WebRequest на основе заданного URI. Если URI начинается с " https:", используется SSL; если URI начинается с" http:", используется незашифрованное соединение.