.NET
C#: Webservices ueber HTTPS nutzen
Posted on .Wenn eure Anwendung mit Webservices zusammen arbeitet z.B. über HttpWebRequests und dieser Service eine sichere Verbindung voraussetzt müsst ihr die Zertifikate akzeptieren, die euch der Server sendet, damit eine Kommunikation zu Stande kommen kann.
Im .NET Framework ist das relativ einfach geregelt, man muss lediglich eine delegate Methode registrieren:
System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate( object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; };Diese Methode wird nun bei jedem HTTPS Aufruf gestartet. Deren Aufgabe ist es das übergebene Zertifikat zu prüfen und für gut oder schlecht zu befinden. In dem oberen Fall akzeptieren wir alle Zertifikate, egal ob sie sicher sind oder ungültig, dies wird oft zum Testen benutzt.
Natürlich stellen euch die Objekte X509Certificate und X509Chain viele Methoden zur Verfügung mit denen ihr den Hersteller und auch den Aufrufer überprüfen könnt.
System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate( object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { //Prüfen, ob das Zertifikat noch nicht abgelaufen ist ( > 0 -> Abgelaufen) if (DateTime.Now.CompareTo(DateTime.Parse(cert.GetExpirationDateString())) < 0) { //Prüfen ob Zertifizierungsstelle bekannt ist (Werte für euch anpassen) if (cert.Issuer.Equals("C=[country ID], S=[state], L=[location], O=[office], OU=[office unit], CN=[host name], E=email id")) { //Alles OK? return true; } } //Ansonsten das Zertifikat ablehnen return false; }; [/code]404 Not Found Error: Not Found
The requested URL
/
was not found on this server.So könnte eine einfache Prüfung aussehen, in der geprüft wird, ob das Zertifikat noch gültig ist und ob der Herausgeber bekannt ist. (Hier müsst ihr die Werte natürlich anpassen)
Wenn ihr diesen Aufruf nun einmalig tätigt, bevor ihr den ersten Webzugriff macht sollten keine Probleme bei der Kommunikation mit dem SSL Server auftreten!
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author bigbasti87
Posted at 07:01 10. Juni 2010.
Bloggd: C#: Webservices ueber HTTPS nutzen – http://blog.bigbasti.com/c-webservices-u…