无法使用IIS中的第三方WCF服务创建SSL / TLS安全通道

时间:2019-01-16 12:40:41

标签: c# wcf x509certificate x509

我正在尝试使用第三方WCF服务,该服务要求在客户端配置X.509证书。我提供了一个.p12文件和一个密码短语。我将其安装在LocalComputer中。我在Web窗体应用程序中配置了商店名称(在个人商店中安装时为My,在TCA中安装时为Root)。当我尝试发出请求时,它因上述错误而中止。这已经存在。

<security mode="Transport">
    <transport clientCredentialType="Certificate" />
</security>

我应该在托管Web窗体应用程序的IIS中做其他事情,还是应该请第三方提供更多文件?在线是否有任何步骤描述客户端需要在IIS中为X.509证书身份验证做什么?

当我通过单击Google Chrome使用Visual Studio Internal Server时,上述设置非常有效。但是错误是当它在IIS中发布时。

更新: 我做了this,它在Windows Server 2008中可以正常工作。在Windows 7中,它仍然无法正常工作。在Windows 7中,即使内部Visual Studio服务器也无法正常工作以发出此请求。

2 个答案:

答案 0 :(得分:1)

我相信,您需要将客户端证书安装到CurrentUser\My证书存储中,而不是LocalMachine。标准用户无权访问LocalMachine存储区中安装的证书。

更新

  

当我通过单击Google Chrome使用Visual Studio Internal Server时,上述设置非常有效。但是错误是当它在IIS中发布时。

IIS中的

网站在应用程序池安全性上下文下运行。您必须将证书安装到应用程序池使用的帐户的“个人”存储中。当您在Visual Studion调试器中运行Web应用程序时,它在您的用户帐户下运行,并且您的用户帐户显然在个人存储中拥有此证书。该错误表明该证书未安装在应用程序池的个人存储中。

答案 1 :(得分:0)

所以问题在于该通道不是TLS1.2。并像设置其他帖子中的其他任何答案一样设置代码即可。如果不是这样,则必须通过在reg edit中进行编辑来确保使用TLS1.2发出请求。

This应该有助于在注册表编辑中进行设置。