Actualmente me estoy integrando con un sistema creado por un tercero. Este sistema requiere que envíe una solicitud usando XML/HTTPS. La tercera parte me envía el certificado y lo instalóWebClient + HTTPS Issues
utilizo el siguiente código:
using (WebClient client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");
System.Text.ASCIIEncoding encoding=new System.Text.ASCIIEncoding();
var response = client.UploadData(address, "POST", encoding.GetBytes(msg));
}
Este código devuelve la siguiente WebException
:
la conexión subyacente se cerró: No se pudo establecer relación de confianza para el canal seguro SSL/TLS.
ACTUALIZACIÓN Debido a que es un servidor de prueba estoy trabajando en contra, el certificado no es de confianza y validación falla ... Para evitar esto en entorno de prueba/depuración, cree un nuevo ServerCertificateValidationCallback
ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(bypassAllCertificateStuff);
y aquí está mi devolución de llamada "falso"
private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
return true;
}
+1 para la actualización con el código que utilizó. Buena solución rápida para mí por eso. –
¡Esto fue muy útil en vez de registrar la raíz de Fiddler CA en mi dev-machine al depurar los servicios web SSL! Acabo de poner #if DEBUG alrededor de la parte que agregó la devolución de llamada ficticia para no ponerlo en el código de producción. – jishi
Ir [aquí.] (Http://forums.asp.net/p/1174025/1972251.aspx) – Lonzo