WCF客户端仅在使用IE访问URL后才能工作

时间:2011-10-04 19:34:41

标签: wcf iis ssl ssl-certificate

我们有一个wcf客户端,它调用外部Web服务。该服务通过SSL访问。证书不是自签名证书。它由Verisign发布。

客户端托管在IIS 6中,应用程序池的标识是域服务用户。

每当我们希望我们的客户端访问远程服务时,我们就会得到以下众所周知的异常:“无法与SSL / TLS安全通道建立信任关系 - ”

事实证明,一旦您在同一台服务器上使用IE访问URL,我们的WCF客户端就会按预期工作并接受证书!

我的结论是,用IE访问的URL以某种方式修改了服务器,我们的WCF客户端之后能够进行验证。我们的WCF客户端丢失了什么?

(我知道可以通过在ServerCertificateValidationCallback中返回true来绕过证书验证,但这不是生产的选项。)

1 个答案:

答案 0 :(得分:1)

考虑到所描述的情况,我怀疑您的IIS托管客户端无法加载Verisign根证书。对于我来说,基于IIS的客户端试图访问证书存储的帐户总是有点不清楚。它可能是您的域服务帐户用户,可能是ASP.NET用户,也可能是其他系统定义的帐户。这通常会导致错误。

当您使用IE浏览服务时,毫无疑问用户(您自己的凭据)能够加载Verisign根证书并正确解析信任关系。

请:

  1. 确保在本地计算机帐户
  2. 下的受信任的根权限存储中的Verisign根证书
  3. 让您的客户端的app.config引用从正确的商店加载的正确根证书。
  4. 您可能希望运行ProcessMonitor以找出哪个用户尝试从商店加载证书。