2011-10-04 63 views
0

我们有一个wcf客户端,它调用一个外部web服务。该服务通过SSL访问。证书不是自签名证书。它由Verisign发布。WCF客户端只能在访问URL后使用IE

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

我们希望我们的客户端来访问远程服务我们得到如下众所周知的异常每次:“无法建立与事务管理局的SSL/TLS安全通道的信任关系。”

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

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

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

+0

是否有没有使用ServerCertificateValidationCallback的特殊原因? – alykhalid

+0

导航到IE中的服务URL时是否会收到证书验证错误? – RoccoC5

回答

1

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

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

请:

  1. 确保在受信任的根当局本地计算机帐户下存储威瑞信根证书
  2. 让你的客户的的app.config指向正确的根证书从正确的商店加载。
  3. 您可能需要运行ProcessMonitor来确定哪个用户正尝试从商店中加载证书。