È la prima volta che utilizzo l'autenticazione del certificato. Un partner commerciale espone due servizi, un servizio Web XML e un servizio HTTP. Devo accedere a entrambi con i client .NET.Accesso a un servizio Web e un'interfaccia HTTP utilizzando l'autenticazione del certificato
Quello che ho cercato
0. Impostazione dell'ambiente
Ho installato le SSLCACertificates (su radici e due intermedi) e il certificato client nella mia macchina locale (win 7 Professional) utilizzando certmgr.exe.
1. Per il servizio web
- ho il certificato client (der).
- Il servizio verrà utilizzato tramite un proxy .NET.
Ecco il codice:
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);
Eccezione riportato finalmente dichiarazione: The request failed with an empty response
.
2. Per l'interfaccia HTTP
- Si tratta di un'interfaccia HTTPS devo chiamare attraverso il metodo POST.
- La richiesta HTTPS verrà inviata da un client .NET utilizzando HTTPWebRequest.
Ecco il codice:
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());
Eccezione riportato finalmente dichiarazione: The request was aborted: Could not create SSL/TLS secure channel
.
3. Ultimo tentativo: utilizzando il browser
In Chrome, dopo aver installato i certificati, se provo ad accedere entrambi gli URL ottengo un errore 107:
Error 107 (net::ERR_SSL_PROTOCOL_ERROR)
sono bloccato.
U non è possibile effettuare richieste HTTP con i certificati SSL athorization. È necessario farlo tramite https. Hai bisogno di questo certificato? Se la risposta è sì, è necessario rendere questo servizio Web di comunicazione tramite https. – harry180
@ harry180. Grazie per chiarire. Ho modificato la domanda. –
nel protocollo http quando si invierà un nome utente e una password, è necessario che sia crittografato minimo in MD5. Anche quando lo fai è abbastanza facile divulgare queste informazioni a persone non autorizzate. Riconsiderare l'uso del protocollo https per quel tipo di condivisione delle informazioni. – harry180