1

这个问题在stackoverflow上有很多版本。我已经尝试了很多那里建议的解决方案 - 但这些都不适合我。

我有一个在 Windows Server 2008 上的 IIS 上运行的 VB ASP.NET 应用程序。它调用一个 web 服务。运行 Web 服务的服务器具有自签名证书。我已将证书导入 IIS 机器的信任库。我可以在 IE->Options->Content->Certificates->Trusted Root Certification Authorities 中看到证书。

调用webservice时,抛出异常

基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。

相同的 IIS VB ASP.NET 应用程序在另一台具有类似设置的机器上运行良好。

这些是我检查过的不同的基本内容

  • 用于调用 Web 服务的 URL 与导入受信任根 CA 的证书上的 CN 相同。
  • 调用机器和 Web 服务主机之间的时间同步
  • 证书未过期。
  • IIS 机器在 IIS 中具有代理设置,但 Web 服务主机已添加到不应使用代理的例外列表中。

我在 VB.NET 中编写了一个小型命令行测试程序,调用了运行良好的相同 Web 服务。

将证书导入受信任的 CA 存储后,我进行了 iisreset。

唯一我还没有尝试过的是重新启动 IIS 机器——这是生产机器,我至少有几天不能重新启动它。

我还能尝试什么?

4

1 回答 1

4

Internet Explorer 证书设置仅适用于当前用户。您在操作 IE 时登录的用户与用于托管 IIS 应用程序的用户不太可能相同。您可以将证书添加到相应服务帐户的受信任证书中,但更简单的方法是将其添加到“本地计算机”受信任证书中。

运行 Microsoft 管理控制台(在运行对话框中键入“mmc”)文件 > 添加/删除管理单元 > 证书,为要管理的证书选择“计算机帐户”。这样,服务器上的任何用户或服务帐户都会将证书视为受信任的。

或者,根据您访问 Web 服务的方式,您可以在应用程序本身中添加异常。我会推荐检查证书指纹/哈希的代码,而不是允许它连接到任何不受信任的证书。

于 2013-03-13T04:37:27.623 回答