2012-05-01 8 views
44

Gibt es irgendwas, dass ich RestSharp dazu bringen kann, Fehler in SSL-Zertifikaten zu ignorieren? Ich habe einen Test-Client, und der Dienst, mit dem ich mich verbinde, hat noch kein gültiges Zertifikat.RestSharp - Ignoriere SSL-Fehler

Wenn ich eine Anfrage jetzt machen bekomme ich den Fehler:

The underlying connection was closed: Could not establish trust 
relationship for the SSL/TLS secure channel. 

Vielen Dank im Voraus

/michael

Update:

ich am Ende mit:

ServicePointManager.ServerCertificateValidationCallback += 
      (sender, certificate, chain, sslPolicyErrors) => true; 
+1

Die Antwort ist hier, aber ich kann es nicht in eine echte von meinem Telefon http://www.west-wind.com/weblog/posts/2011/Feb/11/HttpWebRequest-and-Ignoring- SSL-Zertifikat-Fehler –

+0

Großartig - Ich habe die Frage mit der Antwort aktualisiert. Aber posten Sie eine "echte" Antwort und ich akzeptiere sie :-) –

+4

Es ist im Allgemeinen besser, die Testzertifikate in die Trust-Anker der Test-Clients zu importieren, anstatt die Zertifikat-Verifizierung komplett zu ignorieren. Erstens ist es realistischer; Zweitens vermeiden Sie es, diese Art von unsicherem Code in Ihrem Endprodukt zu belassen. – Bruno

Antwort

51

Wie John vorgeschlagen:

ServicePointManager.ServerCertificateValidationCallback += 
     (sender, certificate, chain, sslPolicyErrors) => true; 
+3

Funktioniert, aber das ist nicht toll, wenn man bedenkt, dass es ein globales Verhalten setzt. – talles

4

Es gibt eine bessere Lösung als die Änderung Ihres Codes. Im Idealfall möchten Sie eine Lösung, die die Bedingungen simuliert, die Sie in der Produktion sehen, und das Ändern Ihres Codes wird dies nicht tun und könnte gefährlich sein, wenn Sie vergessen, den Code vor der Bereitstellung zu entfernen.

Sie benötigen ein selbstsigniertes Zertifikat. Wenn Sie IIS Express verwenden, haben Sie bereits eines davon, Sie müssen es nur finden. Wenn Sie es noch nicht haben, öffnen Sie Firefox oder einen beliebigen Browser und gehen Sie auf Ihre Website. Sie sollten in der Lage sein, die Zertifikatsinformationen von der URL-Leiste aus anzuzeigen, und abhängig von Ihrem Browser sollten Sie in der Lage sein, das Zertifikat zu exportieren.

Öffnen Sie als Nächstes MMC.exe, und fügen Sie das Zertifikat-Snap-In hinzu. Importieren Sie Ihre Zertifikatsdatei in den Speicher vertrauenswürdiger Stammzertifizierungsstellen und das ist alles, was Sie benötigen.

Nun vertraut Ihr Computer als Ganzes implizit allen Zertifikaten, die er selbst generiert hat, und Sie müssen keinen Code hinzufügen, um dies speziell zu handhaben. Wenn Sie in die Produktion gehen, wird es weiter funktionieren, vorausgesetzt, Sie haben dort ein korrektes gültiges Zertifikat installiert.

+0

Sorry, aber es ist nicht klar für mich, zu schwierig, im Gegensatz zu der vorherigen Lösung, die gerade funktioniert. Ich bin kein Experte in Zertifikaten. –

+0

Mein RestSharp Rest-Client versucht den Zugriff auf den REST-Service (Drittanbieter/extern/fremd), der kein gültiges Zertifikat hat, wenn ich versuche, seine Site-Alert-Warnung im Browser in der Nähe von URL zu öffnen: "Verbindung ist nicht sicher". Und während des Schreibens stehen keine Zertifikate für den Export aus dem Browser zur Verfügung. Ich habe keine Möglichkeit, ein Zertifikat für diese Seite/Dienst zu kaufen, weil es nicht meiner ist. Ich möchte nur ein paar JSON-Daten ohne Fehler erhalten. –