BigBastis Blog

C#: Webservices ueber HTTPS nutzen

Introduction

user

Sebastian Gross

Sebastian 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.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.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.

404 Not Found

Error: Not Found

The requested URL / was not found on this server.

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]

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!

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian 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.

Comments
user

Author bigbasti87

Posted at 07:01 10. Juni 2010.

Bloggd: C#: Webservices ueber HTTPS nutzen – http://blog.bigbasti.com/c-webservices-u

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (1) ...
Navigation