2012-05-01 10 views
44

Czy istnieje whay, że mogę uzyskać RestSharp, aby ignorował błędy w certyfikatach SSL? Mam klienta testowego, a usługa, z którą się łączę, nie ma jeszcze prawidłowego cetificate.RestSharp - Ignoruj ​​błędy SSL

Kiedy złożyć wniosek teraz pojawia się błąd:

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

z góry dzięki

/Michael

Aktualizacja:

skończyło się przy użyciu:

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

Odpowiedź jest tutaj, ale nie mogę zmienić jej w prawdziwą z mojego telefonu http://www.west-wind.com/weblog/posts/2011/Feb/11/HttpWebRequest-and-Ignoring- SSL-Certificate-Errors –

+0

Świetnie - Mam zaktualizowane pytanie z odpowiedzią. Ale napisz "prawdziwą" odpowiedź, a ja ją zaakceptuję :-) –

+4

Generalnie lepiej jest importować certyfikaty testowe do zakotwiczeń zaufania klientów testowych niż ignorować weryfikację certyfikatu w ogóle. Po pierwsze jest bardziej realistyczny; po drugie, unikasz pozostawiania tego rodzaju niezabezpieczonego kodu w swoim produkcie końcowym. – Bruno

Odpowiedz

51

Zgodnie z sugestią Johna:

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

Działa, ale to nie jest świetne, biorąc pod uwagę ustawienie globalnego zachowania. – talles

4

Istnieje lepsze rozwiązanie niż modyfikowanie kodu. Idealnie, jeśli potrzebujesz rozwiązania, które będzie symulować warunki, które zobaczysz w produkcji, a modyfikowanie kodu nie spowoduje tego i może być niebezpieczne, jeśli zapomnisz wyjąć kod przed jego wdrożeniem.

Potrzebny jest certyfikat samopodpisany. Jeśli korzystasz z IIS Express, będziesz mieć już jedno z nich, po prostu go znajdziesz. Jeśli już go nie masz, otwórz Firefoksa lub inną przeglądarkę, którą lubisz i przejdź do swojej witryny. Powinieneś być w stanie wyświetlić informacje o certyfikacie z paska adresu URL iw zależności od przeglądarki powinieneś być w stanie wyeksportować certyfikat.

Następnie otwórz MMC.exe i dodaj przystawkę Certificate. Zaimportuj plik certyfikatu do magazynu Zaufane główne urzędy certyfikacji i to wszystko, czego powinieneś potrzebować.

Teraz komputer jako całość będzie domyślnie ufać wszystkim certyfikatom, które sam wygenerował, i nie będzie potrzeby dodawania kodu do obsługi tego. Kiedy przejdziesz do produkcji, będzie działał dalej, pod warunkiem, że masz zainstalowany odpowiedni ważny certyfikat.

+0

Przepraszam, ale nie jest dla mnie jasne, zbyt trudne, w przeciwieństwie do poprzedniego rozwiązania, które po prostu działa. Nie jestem ekspertem od certyfikatów. –

+0

Mój klient RestSharp Rest próbuje uzyskać dostęp do usługi REST (firma zewnętrzna/zewnętrzna/zagraniczna), która nie ma ważnego certyfikatu, gdy próbuję otworzyć tylko alert dotyczący witryny, który widzę w przeglądarce pod adresem URL: "połączenie nie jest bezpieczne". Nie masz też żadnych certyfikatów do eksportu z przeglądarki, jak piszesz. Nie mam możliwości zakupu certyfikatu dla tej witryny/usługi, ponieważ to nie moja Chcę po prostu pobrać z niej dane json bez błędu. –