¿Cómo uso WebRequest para acceder a un sitio encriptado SSL usando https?

Estoy escribiendo un progtwig que lee el contenido de una URL proporcionada por el usuario. Mi problema está en el código que dice algo como esto:

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

Y esto se está rompiendo si la url proporcionada es una URL “https: //”. ¿Alguien puede ayudarme a cambiar este código para que funcione con contenido cifrado SSL? Gracias.

Lo está haciendo de la manera correcta, pero los usuarios pueden proporcionar URL a los sitios que tienen instalados certs SSL no válidos. Puede ignorar esos problemas de certificación si coloca esta línea antes de realizar la solicitud web real:

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

donde AcceptAllCertifications se define como

 public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; } 

Este enlace le interesará: http://msdn.microsoft.com/en-us/library/ds8bxk2a.aspx

Para las conexiones http, las clases WebRequest y WebResponse usan SSL para comunicarse con los servidores web que admiten SSL. La decisión de usar SSL la toma la clase WebRequest, basada en el URI que se le da. Si el URI comienza con “https:”, se usa SSL; si el URI comienza con “http:”, se utiliza una conexión no encriptada.

Este trabajó para mí:

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;