【问题标题】:WCF client only works after accessing URL with IEWCF 客户端仅在使用 IE 访问 URL 后才有效
【发布时间】:2011-10-04 19:34:40
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 是否有不使用 ServerCertificateValidationCallback 的特殊原因?
  • 在 IE 中导航到服务 URL 时是否收到证书验证错误?

标签: wcf iis ssl ssl-certificate


【解决方案1】:

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

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

请:

  1. 确保 Verisign 根证书位于 本地计算机帐户下的 Trusted Root Authorities 存储中
  2. 让您的客户端的 app.config 引用正确的根证书,以便从正确的商店加载。
  3. 您可能需要运行 ProcessMonitor 来找出哪个用户正在尝试从存储区加载证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多