Es la primera vez que tengo que utilizar la autenticación de certificados. Un socio comercial expone dos servicios, un servicio web XML y un servicio HTTP. Tengo que acceder a ambos con clientes .NET.acceder a un servicio web y una interfaz HTTP usando la autenticación de certificados
Lo que he tratado
0. Configuración del entorno
He instalado los SSLCACertificates (en la raíz y dos intermedios) y el certificado de cliente en mi máquina local (win 7 profesional) utilizando certmgr.exe.
1. Para el servicio web
- que tienen el certificado de cliente (der).
- El servicio será consumido a través de un proxy .NET.
Aquí está el código:
OrderWSService proxy = new OrderWSService();
string CertFile = "ClientCert_DER.cer";
proxy.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(CertFile));
orderTrackingTO ot = new orderTrackingTO() { order_id = "80", tracking_id = "82", status = stateOrderType.IN_PREPARATION };
resultResponseTO res = proxy.insertOrderTracking(ot);
Excepción se informó en la última declaración: The request failed with an empty response
.
2. Para la interfaz HTTP
- es una interfaz HTTPS Tengo que llamar a través del método POST.
- La solicitud HTTPS será envía desde un cliente .NET utilizando HttpWebRequest.
Aquí está el código:
string PostData = "MyPostData";
//setting the request
HttpWebRequest req;
req = (HttpWebRequest)HttpWebRequest.Create(url);
req.UserAgent = "MyUserAgent";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate(CertFile, "MyPassword"));
//setting the request content
byte[] byteArray = Encoding.UTF8.GetBytes(PostData);
Stream dataStream = req.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//obtaining the response
WebResponse res = req.GetResponse();
r = new StreamReader(res.GetResponseStream());
Excepción se informó en la última declaración: The request was aborted: Could not create SSL/TLS secure channel
.
3. Por último intento: usando el navegador
En Chrome, después de instalar los certificados, si intento acceder a ambas URL me sale un error 107:
Error 107 (net::ERR_SSL_PROTOCOL_ERROR)
estoy atascado.
U no puede hacer peticiones HTTP con certificados SSL athorization. Es necesario hacerlo a través de https. ¿Necesitas este certificado? Si la respuesta es sí, entonces debe hacer que este servicio web se comunique a través de https. – harry180
@ harry180. Gracias por aclarar Edité la pregunta. –
en el protocolo http cuando se le enviará un nombre de usuario y pasword es deben estar encriptados mínima en MD5. Incluso cuando haces eso, es bastante fácil filtrar esta información a personas no autorizadas. Reconsidere el uso del protocolo https para ese tipo de intercambio de información. – harry180