2013-05-29 61 views

回答

2

您實際上也可以在CF中使用ServicePointManager。 首先,創建一個接受一切,所以策略:

public class TrustAllCertificatePolicy : ICertificatePolicy 
{ 
    public TrustAllCertificatePolicy() 
    { 
    } 

    public bool CheckValidationResult(ServicePoint sp, 
     X509Certificate cert, WebRequest req, int problem) 
    { 
     return true; 
    } 
} 

要使用這個類,你應該每個應用會話(每個應用程序啓動時運行下面的代碼一次; TrustAllCertificatePolicy實例將用於每個時間進行SSL連接),並且在發出任何Web請求之前(最好在應用程序啓動時)。

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 

該方案相當於回答是肯定的,通常會出現在瀏覽器中的任何安全消息。

更多信息here

+0

這使得使用https無關緊要。不要這樣做。這就像是回答「是否想要黑客」的問題。 http://labs.rebex.net/HTTPS – Davvit

+0

是的,我同意。因此,我在帖子中的最後一句話。然而,有時候,你並不控制你試圖使用的服務(給它一個有效的證書),但你必須把它消耗掉:)當然,你總是可以微調這隻接受某些無效的證書,我把它留給OP –

+0

它根本不會使HTTPS無關緊要。在打開連接時,它會讓您在中間人攻擊時向人開放,但它仍然遠遠優於將所有內容發送出去。 此外,Windows CE似乎不再正確驗證許多證書,沒有其他選項。 – Ryan