未通过HTTP.SYS正确配置证书服务器证书导致的SSL崩溃

时间:2019-05-27 02:46:32

标签: windows wcf ssl certificate

我正在尝试在装有Windows Server 2012的服务器上安装自托管WCF服务。 我正在按照以下步骤操作:

  1. 使用mmc导入我的pfx文件
  2. 运行“ netsh http add sslcert ipport = 0.0.0.0:9090 certhash = e09280ded2322eb858b38b3250e1a488f797b269 appid = {bd944978-3645-419e-81ab-1ed21a473a46}”

  3. 安装我的服务并启动它

起初它运作良好。但是几个小时后,ssl崩溃了,我只能在下面的客户端上得到错误消息msg

  

mscorlib.dll中发生了类型为'System.ServiceModel.CommunicationException'的未处理的异常。   附加信息:向https://servername:9090/WCFServiceName发出HTTP请求时发生错误。这可能是由于在HTTPS情况下未使用HTTP.SYS正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。

运行“ netsh http delete sslcert ipport = 0.0.0.0:9090” 并删除导入的pfx,然后重做step1和2可以使ssl再次运行,但是问题仍然会在几个小时内出现。

绝对不是SecurityProtocol问题,因为我已经尝试添加

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

在请求之前。服务器和客户端都使用.Net Framework 4.5.2

我应该在哪里找到并解决此有线问题?

1 个答案:

答案 0 :(得分:0)

首先,我们应该确保WCF可以访问证书私钥。应该将网络服务帐户(或每个人帐户)添加到证书READ / Writer组中,然后使用相应的帐户运行应用程序(Windows服务或控制台?)。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-make-x-509-certificates-accessible-to-wcf
其次,您知道TLS版本需要OS和Dotnetframework支持,默认协议版本是ssl3.0 / tls1.0(自动协商,无法配置)。我们最好使用最新的OS版本和.netframework4.7。我认为这可能是通讯不稳定的原因。 请参考以下文档。
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls
随时让我知道问题是否仍然存在。

相关问题