【问题标题】:Certificate validation failed证书验证失败
【发布时间】:2012-03-15 01:13:18
【问题描述】:

演员

-Asp.net 站点 - 客户端
-Wcf 服务 - 服务器

这两个应用程序都在 IIS-7 上运行。

我想在两个应用程序之间进行集成测试。客户端通过“https”访问服务器。 我创建了一个证书并将其分配给服务器。我还将证书添加到“受信任的根证书颁发机构”以被视为有效证书。当我通过浏览器(IE、chrome ...)“点击”服务器的服务时,证书似乎是有效的。但是当我的客户端应用程序尝试访问服务器时,我收到以下错误:

Could not establish trust relationship for the SSL/TLS secure channel with authority **** --->
The remote certificate is invalid according to the validation procedure.

有什么方法可以跳过验证过程或使证书对我的客户端应用程序有效?

只知道:
1。我无法购买证书,因为我只会将其用于测试目的。
2。我无法对应用程序的任何代码(服务器-客户端)进行任何更改

【问题讨论】:

    标签: asp.net wcf certificate wcf-security


    【解决方案1】:

    将验证回调修改为始终返回 true:

    ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, policyErrors) => true;
    

    或者这是否违反了“不更改代码”的条件?

    【讨论】:

    • 是的,不幸的是它违反了该条件。我能做的唯一改变(如果这被认为是改变)是在 web.config 文件上。
    【解决方案2】:

    您是如何将证书安装到受信任的根存储中的?

    如果您通过浏览器执行此操作,很可能您只是将其添加到当前用户。尝试通过本地计算机帐户的 MMC 管理单元添加它;这是我们安装自签名 IIS Express 证书的地方,WCF 似乎对它们很满意。

    【讨论】:

    • 我已经通过 MMC 在我的本地计算机上添加了它,并且在两个应用程序都运行的 Web 服务器上。在此更改之前,浏览器被“抱怨”了证书。之后,它似乎是有效的,但我的客户的验证程序仍然失败。
    【解决方案3】:

    我终于想通了。

    问题在于已添加到“受信任的根证书颁发机构” 的具有相同名称的先前(过期)证书。每次我通过'证书导入向导'(或通过 MMC)安装新证书时,向导都会通知我它已成功添加。但是,它保留了先前证书的实例而不覆盖它。

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 2018-03-15
      • 2015-11-13
      • 2021-11-26
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多