2009-07-23

.NET Tip: Validación de requests con SSL usando System.Net.WebClient

¿Cuantas veces han querido hacer un request a una página por HTTPS y su certificado no era válido? Posiblemente nunca, pero en caso de querer hacerlo se encontrarán con que, por default, System.Net.WebClient rechazará el pedido por motivos de seguridad. Para poder pasar esta validación por arriba hay que hacer el pequeño triquiñuelo de agregar un callback a ServicePointManager.ServerCertificateValidationCallback antes de hacer el request utilizando el WebClient:

public void RequestSSL(string url)
{
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
using (WebClient client = new WebClient())
{
client.DownloadString(url);
}
}
private static bool ValidateRemoteCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors policyErrors)
{
return true;
}

Espero que a alguien le sirva!
Z


2 comentarios:

Mati dijo...

Pasa en robochamps.com y sigue pasando en algunas páginas de msft.

Abrazo Z!

Jorge Baroudi dijo...

Justo lo que estaba buscando :)

saludos y muchas gracias!