繁体   English   中英

IIS托管WCF服务以提供客户端证书

[英]IIS hosted WCF Service to provide client cert

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

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

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

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

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

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

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

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

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

若要正确设置MachineKeys文件夹上的权限,请按照此MS KB文章http://msdn.microsoft.com/zh-cn/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM