2009-04-29 90 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

高速!

相关问题