我有一个关于SSL的问题。

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

假设我想完全保留它“ClickOnce”,这意味着我不想在客户端计算机上做任何事情,除了运行ClickOnce =我不想在客户端上安装证书手动(或不)手机,但我想在Smart Client之前安装它。我会把它包含在包装中,并且是第一件要安装的东西。

我的问题是:

当我在互联网上阅读时,我无法安装“受信任的根证书颁发机构”。没有客户端计算机上的管理员权限

是吗?

如果它是对的,你是否看到另一种解决方案来实现这一目标,或者这是不可能的?

请您提前。

有帮助吗?

解决方案

  

是不是?

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

  

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

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

其他提示

我不是百分之百,这对你有用,但对于我们通过我们的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-我们/库/ system.net.security.remotecertificatevalidationcallback.aspx

一帆风顺!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top