2009-04-29 92 views
1

我migth有關於SSL的另一個問題。ClickOnce受信任的根證書頒發機構

我有一個智能客戶端,我使用ClickOnce進行部署。在這個智能客戶端應用程序中,我調用了HTTPS Web服務。我需要安裝受信任的根證書頒發機構才能訪問此HTTPS Web服務。

假設我想完全保留它「ClickOnce」,這意味着我不想在客戶機上做任何事情,除非運行ClickOnce =我不想在客戶機上安裝證書機器手動(或不),但我希望它安裝在智能客戶端之前。我將它包含在軟件包中,並將成爲第一件安裝的東西。

我的問題是:

正如我在互聯網上閱讀,也沒有辦法,我可以安裝一個「受信任的根證書頒發機構」沒有在客戶機

在具有管理員權限,是不是?

如果它是正確的,你是否看到另一個解決方案來實現這個目標,或者它是不可能的?

Thx你提前。

+0

我想,如果我從一個已經在受信任的根證書頒發機構(Thawte,...)中的根證書頒發機構獲得CA,它應該工作嗎? – GillouX 2009-04-29 08:31:15

回答

1

是不是?

是的,假設你的意思是「那是正確的?」您不能在沒有管理員權限的客戶端計算機上安裝證書,因爲這會破壞證書概念的全部用途。如果沒有用戶的明確操作,不受信任的證書就不會變得可信。

我想,如果我從 根證書頒發機構,其 已經在受信任的根 證書頒發機構之一獲得CA(Thawte的,...) ,它應該工作?

我假設的「CA」實際上是指「證書」。 CA代表證書頒發機構。 Thawte,Verisign等都是證書頒發機構。您從證書頒發機構獲取證書。答案是肯定的,這是可行的,因爲(你說過)他們已經被全世界的每個人都信任了。

0

我不是100%,這將適用於您,但對於我們通過我們的Web服務與https進行通信的單元測試(在開發計算機上沒有CA頒發的證書),我們這樣做:

在客戶端,我們稱這種靜態方法: (我們使用的是帶有WSE3 Web服務,不知道如果這取決於)

private static void DisableCertificateChainCheckingForTestCertificateCompatibility() 
    { 
     ServicePointManager.ServerCertificateValidationCallback = 
      new RemoteCertificateValidationCallback(
       ValidateServerCertificate); 
    } 

    internal static bool ValidateServerCertificate(
     object sender, 
     X509Certificate certificate, 
     X509Chain chain, 
     SslPolicyErrors sslPolicyErrors) 
    { 
     if (sslPolicyErrors == SslPolicyErrors.None) 
     { 
      return true; 
     } 

     //Allow untrusted machines 
     if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) 
     { 
      return true; 
     } 

     // Do not allow this client to communicate with unauthenticated servers. 
     return false; 
    } 

雙檢查與MSDN我foud我曾經從這裏直接拿這個代碼: http://msdn.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx

高速!

相關問題