Der Zugriff auf einen web-service und eine HTTP-Schnittstelle mit Zertifikat-Authentifizierung

Es ist das erste mal, dass ich, um Zertifikatauthentifizierung verwenden.
Eine kommerzielle partner setzen zwei Dienste, die einen XML-Webdienst und HTTP-Dienst. Ich habe Zugriff auf beide von Ihnen mit .NET-clients.

Was ich versucht habe

0. Einrichten der Umgebung

Habe ich installiert die SSLCACertificates (auf root-und zwei intermediate) und das client-Zertifikat in meiner lokalen Maschine (win 7 professional) mit certmgr.exe.

1. Für die web-service -

  • Ich habe das client-Zertifikat (der).
  • Die Dienstleistung verbraucht wird, über einen .NET-proxy.

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

Ausnahme berichtet, Letzte Aussage: The request failed with an empty response.

2. Für die HTTP-Schnittstelle

  • es ist eine HTTPS-Schnittstelle, ich habe zu nennen, durch die POST-Methode.
  • Die HTTPS-Anforderung senden aus .NET-client mit HTTPWebRequest.

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

Ausnahme berichtet, Letzte Aussage: The request was aborted: Could not create SSL/TLS secure channel.

3. Letzter Versuch: mit der browser -

In Chrome nach der Installation der Zertifikate, wenn ich versuche, auf beide urls bekomme ich einen 107 Fehler:

Error 107 (net::ERR_SSL_PROTOCOL_ERROR)

Komme ich nicht weiter.

  • U nicht leisten können http-Anfragen mit ssl-Zertifikaten athorization. Es müssen über https geschehen. Sie benötigen dieses Zertifikat? Wenn die Antwort ja ist, dann haben Sie, um diese web service die Kommunikation über https.
  • Vielen Dank für die Klärung. Ich bearbeitet die Frage.
  • im http-Protokoll, wenn Sie senden wird ein Benutzernamen und Passwort es verschlüsselt sein minimum in MD5. Auch, wenn Sie das tun, ist es ziemlich einfach Auslaufen dieser Informationen an nicht autorisierte Personen. Überdenken über das https-Protokoll für diese Art von Informationsaustausch.
Schreibe einen Kommentar