0

我有一个 wfc VS 2010/C# 程序,它已经在 Win03 服务器上运行了 6 个月没有问题。该应用程序使用远程服务器的公钥发送请求,然后使用我们的私钥解密返回的响应。

我们的证书即将到期,所以我们发布了一个新证书。我们将公钥提供给远程人员,并将私钥文件安装在服务器上,这是一个密码保护 P12。我还将它安装在我的开发机器上。

开发机器没有问题。我可以像以前一样发送请求并获得响应。我的开发机器是64位的Win7。在 Win03 服务器生产机器上,我收到以下错误:无法为具有权限“{远程服务器的公钥名称}”的 SSL/TLS 安全通道建立信任关系。

远程服务器的公钥在我的证书存储中具有有效日期和有效链。此密钥上方的链中有两个证书,它们都有有效的日期和链。我已卸载并重新安装了所有证书,但无法通过此操作。我不知道是什么原因造成的。

当我在 Google 上搜索“无法为具有权限的 SSL/TLS 安全通道建立信任关系”时,我看到了许多解决同一问题的“解决方案”,它们都涉及代码更改。这似乎不是我想要的。代码在开发机器上运行良好,直到今天早上在生产服务器上运行良好。唯一改变的是我们的证书。

我注意到的一件事是 Win03 服务器没有本地计算机证书存储,所以我不可能在那里安装证书。当我导入证书时,我有时让向导决定将证书放在哪里,而其他时候则告诉它把证书放在哪里。两者的反应相同。我始终以管理员身份登录并始终在管理员下运行应用程序。

知道是什么导致了我的问题吗?

<更新> 当我运行编译的程序时,我的开发 PC 上出现了同样的问题。但是,当我运行编译后的程序并尝试使用 Fiddler 查看输出时,我从 Fiddler 收到以下消息。如果我说是,请求会按预期返回。如果我说不,我会得到 100% 的失败,就像服务器上的可执行文件一样。

无法为具有“555.555.555.555”权限的 SSL/TLS 安全通道建立信任关系。

会话 #1:由于 RemoteCertificateNameMismatch,远程服务器 (555.555.555.555) 提供了未验证的证书。

主题:CN=prods-dp.wellpoint.com,OU=SOA CoE,O=Wellpoint,L=Richmond,S=Virginia,C=US

发行人:CN=Anthem Inc 证书颁发机构,OU=Ecommerce,O=Anthem Inc,C=US

过期:2013 年 7 月 10 日上午 6:39:09

(可以通过单击工具 | Fiddler 选项禁用此警告。)

格雷格

4

1 回答 1

0

I was referencing the ip address in the app.congif instead of the domain name.

Wrong <*endpoint address="https://555.555.555.55/web_service"

Right <*endpoint address="https://thewebservicedomain.com/web_service"

I'm not sure if this is because I have identity block which references the domain name as part of the endpoint, like this...

    <identity>
      <dns value="thewebservicedomain.com" />
    </identity>

Greg

于 2013-05-09T15:13:01.607 回答