我们有一个wcf客户端,它调用外部Web服务。该服务通过SSL访问。证书不是自签名证书。它由Verisign发布。
客户端托管在IIS 6中,应用程序池的标识是域服务用户。
每当我们希望我们的客户端访问远程服务时,我们就会得到以下众所周知的异常:“无法与SSL / TLS安全通道建立信任关系 - ”
事实证明,一旦您在同一台服务器上使用IE访问URL,我们的WCF客户端就会按预期工作并接受证书!
我的结论是,用IE访问的URL以某种方式修改了服务器,我们的WCF客户端之后能够进行验证。我们的WCF客户端丢失了什么?
(我知道可以通过在ServerCertificateValidationCallback中返回true来绕过证书验证,但这不是生产的选项。)
答案 0 :(得分:1)
考虑到所描述的情况,我怀疑您的IIS托管客户端无法加载Verisign根证书。对于我来说,基于IIS的客户端试图访问证书存储的帐户总是有点不清楚。它可能是您的域服务帐户用户,可能是ASP.NET用户,也可能是其他系统定义的帐户。这通常会导致错误。
当您使用IE浏览服务时,毫无疑问用户(您自己的凭据)能够加载Verisign根证书并正确解析信任关系。
请: