En mi cliente de C# Windows, tengo un envío POST a "la nave nodriza". Quiero que los datos en los envíos sean seguros, por supuesto, así que pagué para que HostGator me emitiera un certificado SSL.Usando System.Net.WebClient con el certificado HTTPS
AHORRÉ fuera el archivo .CER, y estoy construyendo la solicitud como tal:
//wrapper for WebClient object to use certificate file
class SecureWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
string certPath = @"e:\mycertificate.cer";
X509Certificate myCert = X509Certificate.CreateFromCertFile(certPath);
request.ClientCertificates.Add(myCert);
return request;
}
}
//request
private static SecureWebClient client = new SecureWebClient();
private static NameValueCollection = new NameValueCollection();
nvc.Add(POST_ACTION, ACTION_CODE_LOGIN);
nvc.Add(POST_EMAIL, email);
nvc.Add(POST_PASSWORD, password);
sResponse = System.Text.Encoding.ASCII.GetString(client.UploadValues(BASE_URL + ACTION_PAGE, nvc));
Su lanzar una System.NET.WebException:
la conexión subyacente se cerró: Se produjo un error inesperado en un envío.
El InnerException es una System.IO.IOException:
El apretón de manos falló debido a un formato inesperado paquete.
¿Alguna idea de lo que estoy haciendo mal?
¿Desea el certificado SSL en el cliente o el servidor? – SLaks
Para aclarar: ¿desea cifrar la comunicación (necesita el certificado en el servidor)? ¿O desea autenticar al cliente (necesita un certificado de cliente)? Para ser específico, necesitará una clave privada (un archivo .PFX, probablemente) en el extremo relevante. –
No estoy completamente versado en las formas de seguridad. Puedo acceder al sitio host en un navegador con protocolo HTTPS. Quiero publicar datos en el mismo servidor/sitio con encriptación. Entonces, @SLaks - No estoy seguro, técnicamente hablando, de lo que quiero. Solo sé en laicos lo que necesito como se describió anteriormente. –