L'accès à un service web et une interface HTTP à l'aide de l'authentification par certificat

C'est la première fois que je dois utiliser l'authentification par certificat.
Un partenaire commercial exposer deux services, un Service Web XML et d'un service HTTP. J'ai accès à tous deux .NET clients.

Ce que j'ai essayé

0. Configuration de l'environnement

J'ai installé le SSLCACertificates (sur la racine et deux intermédiaires) et le certificat du client dans mon local de la machine (win 7 professionnel) à l'aide de certmgr.exe.

1. Pour le service web

  • J'ai le certificat du client (der).
  • Le service sera consommée par un .NET proxy.

Voici le code:

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);

Exception signalée lors de la dernière déclaration: The request failed with an empty response.

2. Pour l'interface HTTP

  • c'est une interface HTTPS-je faire un appel par le biais de la méthode POST.
  • La demande HTTPS sera envoyer à partir d'une .NET client à l'aide de HTTPWebRequest.

Voici le code:

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());

Exception signalée lors de la dernière déclaration: The request was aborted: Could not create SSL/TLS secure channel.

3. Dernier essai: à l'aide du navigateur

En Chrome, après l'installation de certificats, si j'essaie d'accéder à l'url-je obtenir un 107 erreur:

Error 107 (net::ERR_SSL_PROTOCOL_ERROR)

Je suis coincé.

U ne peut pas faire de requêtes http avec les certificats ssl athorization. C'est le besoin d'être faite via le protocole https. Avez-vous besoin de ce certificat? Si la réponse est oui, alors vous devez faire ce service web, de la communication via le protocole https.
Merci pour la clarification. J'ai édité la question.
pour le protocole http, lorsque vous enverrez un nom d'utilisateur et mot de passe, il doit être chiffré minimum en MD5. Même lorsque vous faites cela, c'est assez facile de fuite de cette information à des personnes non autorisées. Reconsidérer l'aide du protocole https pour ce genre de partage de l'information.

OriginalL'auteur Alberto De Caro | 2012-06-22