2017-06-12 68 views
0

我最近遇到了一個問題,我試圖從網站獲取資源。該網站已與自簽名證書關聯。當我通過WebRequest請求資源時,它會拋出以下錯誤:處理自簽名證書的最佳方式

Could not establish trust relationship for the SSL/TLS secure channel

我確實在尋找解決方案。我不想禁用完全檢查證書。總之,我無法找到令人信服的答案。請讓我知道處理自簽名證書的最佳方式。

+0

該錯誤表示底層TCP客戶端無法驗證服務器的真實性。涉及證書供應的做法有多種不同的方法。例如,將自簽名證書加載到您的個人存儲中以使用Peer Trust驗證。 – Biscuits

+0

你能解釋一下嗎? – Sasu

+0

在典型的情況下,在啓用TLS的情況下,服務器在建立安全連接之前在握手過程中向客戶端提供證書。該證書允許客戶端在客戶端接受連接並向服務器發送潛在的敏感信息之前加密驗證服務器是否可信(以防欺騙)。您客戶端的服務器驗證可以自行決定跳過(不推薦)。 – Biscuits

回答

0

首先,重要的是要知道,這個例外是通過檢查站點認證信任來阻止您訪問可能的假Web服務器。

自簽名證書可以信任,但你必須安裝它的根CA系統將信任CA存儲

它你堅持相信由自簽名證書,而無需安裝它的根CA到受信任的CA存儲簽名的服務器,你可以強制檢查機制這個相信任何東西:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

或者更好的辦法將此強制信任僅設置爲HttpWebRequest實例:

var request = (HttpWebRequest)HttpWebRequest.Create(myUri); 
request.ServerCertificateValidationCallback = delegate { return true; }; 
+0

我正在使用ASP .NET 4.0。我認爲我不能這樣做。 request.ServerCertificateValidationCallback = delegate {return true; }; – Sasu