【问题标题】:ClickOnce Trusted Root Certification AuthoritiesClickOnce 受信任的根证书颁发机构
【发布时间】:2009-06-14 04:27:59
【问题描述】:

我可能还有一个关于 SSL 的问题。

我有一个智能客户端,我使用 ClickOnce 部署它。在这个 Smart Client 应用程序中,我调用了 HTTPS Web 服务。我需要安装受信任的根证书颁发机构才能访问此 HTTPS Web 服务。

假设我想完全保留它“ClickOnce”,这意味着我不想在客户端机器上做任何事情,除了运行 ClickOnce = 我不想在客户端机器上安装证书手动(或不手动),但我想在 Smart Client 之前安装它。我会将它包含在包中,并且会首先安装。

我的问题是:

正如我在 Internet 上看到的,如果没有客户端计算机上的管理员权限,我无法安装“受信任的根证书颁发机构”

对吗?

如果正确,您是否看到了实现此目标的另一种解决方案,或者根本不可能?

提前谢谢你。

【问题讨论】:

  • 我猜,如果我从已在受信任的根证书颁发机构 (Thawte,...) 中的某个根证书颁发机构获得 CA,它应该可以工作吗?
  • 请注意,我不推荐 Thawte,因为在普通非开发机器上的受信任证书中找不到他们的中间代码签名证书,因此您可以签署 clickonce,您的用户将获得但是,当他们运行该应用程序时会发出警告。希望这会有所帮助。

标签: clickonce certificate-authority


【解决方案1】:

对吗?

是的,假设您的意思是“正确吗?”您不能在没有管理员权限的客户端计算机上安装证书,因为这会破坏证书概念的整个目的。如果没有用户的明确操作,不受信任的证书无法神奇地变得受信任。

我猜,如果我从其中一个获得 CA 根证书颁发机构 已经在受信任的根目录中 认证机构(Thawte,...) ,它应该工作吗?

我假设“CA”实际上是指“证书”。 CA 代表证书颁发机构。 Thawte、Verisign 等是证书颁发机构。您从证书颁发机构获得证书。答案是肯定的,这会奏效,因为(你说过)他们已经受到世界上几乎所有人的信任。

【讨论】:

    【解决方案2】:

    我不是 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 仔细检查后,我发现从前我直接从这里获取了这段代码: http://msdn.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx

    神速!

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2014-07-13
      • 2010-10-13
      • 2011-07-16
      • 2014-09-18
      • 2018-07-30
      相关资源
      最近更新 更多