【问题标题】:IIS hosted WCF Service to provide client certIIS 托管 WCF 服务以提供客户端证书
【发布时间】:2015-01-04 12:02:53
【问题描述】:

我有 2 个服务需要来回通信。 Service1 是托管在 IIS 7.5 中的 WCF。 Service2 是托管在 Wildfly 中的 Java。这两种服务都需要客户端证书作为它们之间双向(相互)SSL 连接的一部分。两种服务使用的证书都是由同一个证书颁发机构生成的。

Service2 (Java) 能够毫无问题地调用 Service1 (WCF)。证书通过并且消息在它们之间正确流动。

Service1 (WCF) 无法调用 Service2 (Java)。在此交互中,WCF 服务记录状态:“...SecurityNegotiationException:无法为具有权限的 SSL/TLS 建立安全通道‘’。 ---> System.Net.WebException:请求被中止:无法创建 SSL/TLS 安全通道。”

查看此异常,它让我相信 Service1 (WCF) 没有将其客户端证书提供给 Service2 (Java)。我尝试通过向 Service1 的行为添加 部分来将客户端证书添加到 Service1 (WCF),但我不确定这是否是在 IIS 中执行此操作的正确方法。

为了证明我的理论,我有一个自托管的 WCF 服务(不在 IIS 中运行),它与 Service1(IIS 中的 WCF)在同一台机器上运行。使用相同的证书,我可以毫无问题地调用 Service2 (Java)。

有谁知道如何在 IIS 7.5 中配置 WCF 服务,以便在调用(向另一个服务)时提供客户端证书?

顺便说一句,我已经尝试为 Service1 (WCF) 的“服务器”和“客户端”端使用单独的证书。这并没有解决问题。

【问题讨论】:

    标签: java wcf iis ssl wildfly


    【解决方案1】:

    我最终将此归结为证书权限问题。

    主要问题是 MachineKeys 文件夹没有将权限应用于新添加的密钥。当 IIS 服务尝试访问密钥时,这会导致权限被拒绝错误。奇怪的是服务日志中没有显示错误,而是我不得不在事件查看器中挖掘才能最终找到它(我也不确定它是否总是显示在事件查看器中......但这是另一个故事) .

    要正确设置 MachineKeys 文件夹的权限,请按照此 MS 知识库文章中的步骤操作 http://msdn.microsoft.com/en-us/library/ee248638%28v=vs.100%29.aspx

    另外,我发现这篇文章将我推向了那个方向 http://blogs.msdn.com/b/kaushal/archive/2012/10/07/error-hresult-0x80070520-when-adding-ssl-binding-in-iis.aspx?Redirected=true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多