【问题标题】:WCF Authentication - X509 CertificateWCF 身份验证 - X509 证书
【发布时间】:2011-06-15 18:18:49
【问题描述】:

我想使用 X509 证书对我的 WCF 服务的用户进行身份验证。我将我的服务设置为使用 SSL 并进行所有相关的 WCF 配置。当我尝试使用我的服务时,我收到以下错误:

 The remote certificate is invalid according to the validation procedure. 

如果我将我的证书(自签名)添加到受信任的人,那么该错误就会消失。我相信这意味着我需要向我的服务的所有(外部)消费者提供我的证书。有没有办法解决这个问题?

【问题讨论】:

  • 我的安全配置如下:

标签: wcf wcf-security x509certificate x509


【解决方案1】:

所有证书均由证书颁发机构 (CA) 验证。

就您而言,我怀疑您的 CA 不受信任。启动 MMC 并为您的本地计算机添加证书管理器。 Se 在 Trusted Root CA 下(不记得确切的词)。

自签名证书意味着证书的 CA 与证书本身相同。

还要了解如何使用证书:您是在使用它们来识别您的客户端,还是出于 SSL 的目的来加密传输级别?

如果您想为许多不同的客户使用证书,我强烈建议您查看来自 Verisign 等公司的公共 PKI 服务

【讨论】:

  • 证书由 CA 颁发(根据 CSR、证书签名请求创建并签名),而不是“验证”。 OP 使用自签名证书,这是不可信的,当然。
【解决方案2】:

自签名证书不被信任,也不能被信任(除非用户明确信任它们或某些代码这样做)。您确实需要从已建立的 CA 之一购买证书,例如 Thawte、GlobalSign、Comodo (InstantSSL)。我们使用 GlobalSign 和 Comodo,各有各的优势。您需要的是为您的服务器域名颁发的常规“SSL 证书”(尽管名称不正确,但他们称之为)。

【讨论】:

    【解决方案3】:

    由于我们将自签名证书用于开发目的,因此我不得不覆盖证书的验证。我的代码是:

    if (validateServerCertificate)
            {
                ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);
            }
    private static bool ValidateRemoteCertificate(object sender,
                                                      X509Certificate certificate,
                                                      X509Chain chain,
                                                      SslPolicyErrors policyErrors)
        {
            return true;
        }
    

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2013-10-07
      • 1970-01-01
      • 2018-02-12
      • 2016-03-26
      相关资源
      最近更新 更多