2012-08-14 35 views
8

有些情況下您希望您的應用程序接受無效的SSL證書(測試環境/自簽名證書等)。使用WinRT接受無效的SSL證書

在.NET世界中,人們會使用ServerCertificateValidationCallback類來這樣做。不幸的是,這個類不存在於WinRT上下文中。

我需要使用服務器上託管的WinRT而不使用有效的ssl證書來使用Web API。

如何使用HttpClient類或任何其他適當的類在WinRT中接受無效的ssl證書。

任何幫助或替代品將不勝感激。

+1

或者,您可以添加您的自簽名的檢測證書到本地證書存儲區中,這樣他們就被視爲有效。 – Wug 2012-08-14 15:22:52

+0

我正在考慮這個問題,理論上這應該可行,但是:我使用的設備是一個可以購買的硬件,它只是爲了解釋普通用戶如何使用ssh登錄到計算機,獲取證書和如此等等。或者有沒有辦法讓這個自動化? – Flo 2012-08-14 15:40:45

+0

取決於操作系統。您可以提供各種格式的證書以及不同操作系統的安裝說明(其中大多數將基本上「下載並雙擊」)。如果你在一家公司工作,你可以向他們的IT部門提出請求,他們可以在他們員工的機器上進行安裝 – Wug 2012-08-14 15:45:07

回答

-1

在silverlight,這是不允許的。我還沒有看到任何說WinT允許的東西。

+0

這表明你不能這樣做:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/4a776e8c-0e10-4f03-908f-7f765d914080 - MS說的另一種情況不,蘋果說:「是的,我們愛開發人員!」 – dethSwatch 2012-10-18 20:46:42

+0

我認爲現在我沒有別的選擇,只能接受你的答案。讓他們希望他們在未來改變一些事情! – Flo 2012-10-19 05:40:19

+0

以下答案正在工作:-) – 2015-08-06 14:03:50

3

下面的代碼爲我工作的調試方案:

var filter = new HttpBaseProtocolFilter(); 
#if DEBUG 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired); 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted); 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName); 
#endif 
using (var httpClient = new HttpClient(filter)) { 
    ... 
} 
+0

您介意如何使用Webview來解釋這個問題嗎? – xMythicx 2015-04-28 15:45:31

+0

對webview解決方案不知道。原來的問題不是關於webview。 爲什麼這個問題沒有用? – 2015-05-01 14:53:33

+1

謝謝Dschüsä,這對我的Windows 10應用程序有很大的幫助! – 2015-08-06 14:02:53