无法在 IIS 中使用第三方 WCF 服务创建 SSL/TLS 安全通道
Could not create SSL/TLS secure channel with a third party WCF service in IIS
我正在尝试使用第三方 WCF 服务,该服务需要在客户端配置 X.509 证书。我获得了一个 .p12 文件和一个密码。我将它安装在 LocalComputer 中。我在我的 Web 表单应用程序中配置了商店名称(当我在个人商店中安装时是我的,当我在 TCA 中安装时是 Root)。当我尝试发出请求时,它因上述错误而中止。这已经存在了。
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
我应该在托管我的 Web 表单应用程序的 IIS 中做任何额外的事情,还是应该向第三方索取更多文件?是否有任何在线步骤描述客户端需要在 IIS 中为 X.509 证书身份验证做什么?
当我通过单击 Google Chrome 使用 Visual Studio 内部服务器时,上述设置运行良好。但是在IIS发布的时候报错
更新:
我做了 this,它在 windows 服务器 2008 中正常工作。在 windows 7 中它仍然无法工作。在 windows 7 中,甚至内部 visual studio 服务器也无法正常工作以发出此请求。
我相信,您需要将客户端证书安装到 CurrentUser\My
证书存储中,而不是 LocalMachine
。标准用户无权访问安装在 LocalMachine 商店中的证书。
更新
The above setup works well in when I use Visual Studio Internal Server by clicking Google Chrome. But the error is when it is published in IIS.
IIS 中的网站 运行s 在应用程序池安全上下文中。您必须将证书安装到应用程序池使用的帐户的个人存储中。当您在 Visual Studio 调试器中 运行 Web 应用程序时,它 运行 在您的用户帐户下,您的用户帐户显然在个人商店中有此证书。该错误提示证书未安装在应用程序池的个人存储中。
所以问题是通道不是 TLS1.2。并像其他帖子中的任何其他答案一样设置它的代码表明会起作用。如果这不是一个选项,您必须确保通过在 reg edit 中编辑来使用 TLS1.2 发出请求。
This 应该有助于在注册表编辑器中进行设置。
我正在尝试使用第三方 WCF 服务,该服务需要在客户端配置 X.509 证书。我获得了一个 .p12 文件和一个密码。我将它安装在 LocalComputer 中。我在我的 Web 表单应用程序中配置了商店名称(当我在个人商店中安装时是我的,当我在 TCA 中安装时是 Root)。当我尝试发出请求时,它因上述错误而中止。这已经存在了。
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
我应该在托管我的 Web 表单应用程序的 IIS 中做任何额外的事情,还是应该向第三方索取更多文件?是否有任何在线步骤描述客户端需要在 IIS 中为 X.509 证书身份验证做什么?
当我通过单击 Google Chrome 使用 Visual Studio 内部服务器时,上述设置运行良好。但是在IIS发布的时候报错
更新: 我做了 this,它在 windows 服务器 2008 中正常工作。在 windows 7 中它仍然无法工作。在 windows 7 中,甚至内部 visual studio 服务器也无法正常工作以发出此请求。
我相信,您需要将客户端证书安装到 CurrentUser\My
证书存储中,而不是 LocalMachine
。标准用户无权访问安装在 LocalMachine 商店中的证书。
更新
The above setup works well in when I use Visual Studio Internal Server by clicking Google Chrome. But the error is when it is published in IIS.
IIS 中的网站 运行s 在应用程序池安全上下文中。您必须将证书安装到应用程序池使用的帐户的个人存储中。当您在 Visual Studio 调试器中 运行 Web 应用程序时,它 运行 在您的用户帐户下,您的用户帐户显然在个人商店中有此证书。该错误提示证书未安装在应用程序池的个人存储中。
所以问题是通道不是 TLS1.2。并像其他帖子中的任何其他答案一样设置它的代码表明会起作用。如果这不是一个选项,您必须确保通过在 reg edit 中编辑来使用 TLS1.2 发出请求。
This 应该有助于在注册表编辑器中进行设置。