2012-05-01 151 views
44

是否有任何問題讓我可以讓RestSharp忽略SSL證書中的錯誤?我有一個測試客戶端,並且我連接的服務尚未具有有效的證書。RestSharp - 忽略SSL錯誤

當我提出一個要求,現在我得到的錯誤:

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

在此先感謝

/邁克爾

更新:

我最終使用:

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

答案就在這裏,但我不能把它變成從我的手機http://www.west-wind.com/weblog/posts/2011/Feb/11/HttpWebRequest-and-Ignoring-一個真實的SSL證書錯誤 –

+0

太好了 - 我已經用問題的答案更新了問題。但發佈一個「真實」的答案,我會接受它:-) –

+4

在測試客戶端信任錨中導入測試證書通常會更好,而不是完全忽略證書驗證。首先,它更現實;其次,你避免在最終產品中留下這種不安全的代碼。 – Bruno

回答

51

由於約翰建議:

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

工程,但考慮到它是設置全局行爲,這並不是很好。 – talles

4

有一個比修改代碼更好的解決方案。理想情況下,您需要一種能夠模擬您在生產中看到的條件的解決方案,並且修改代碼不會這樣做,並且如果在部署代碼之前忘記取出代碼,可能會非常危險。

您需要某種自簽名證書。如果您使用的是IIS Express,則您將擁有其中一個,您只需要找到它即可。如果您還沒有它,請打開Firefox或任何您喜歡的瀏覽器並進入您的網站。您應該能夠從URL欄中查看證書信息,並且根據您的瀏覽器,您應該能夠導出證書。

接下來,打開MMC.exe,並添加證書管理單元。將您的證書文件導入受信任的根證書頒發機構存儲區,這就是您應該需要的一切。

現在,您的計算機作爲一個整體將隱式地信任它自己生成的任何證書,並且您將不需要添加代碼來專門處理此問題。當您轉入生產環境時,只要您在那裏安裝了適當的有效證書,它就會繼續工作。

+0

對不起,但對於我來說,並不清楚,太困難了,不像以前的解決方案,只是工作。我不是證書專家。 –

+0

我的RestSharp Rest客戶端嘗試訪問沒有有效證書的REST服務(第三方/外部/外部),當我嘗試打開它的網站時,我在瀏覽器附近的URL中看到警報:「連接不安全」。編寫時沒有可用於從瀏覽器導出的證書。我沒有可能爲該網站/服務購買證書,因爲它不是我的,我只想從它接收一些json數據而沒有錯誤。 –