【发布时间】:2024-01-16 09:41:01
【问题描述】:
我正在尝试在装有 Windows Server 2012 的服务器上安装自托管 WCF 服务。 我按照以下步骤操作:
- 用 mmc 导入我的 pfx 文件
运行“netsh http add sslcert ipport=0.0.0.0:49000 certash=e09280ded2322eb858b38b3250e1a488f797b269 appid={4dc3e181-e14b-4a21-b022-59fc669b0914}”
安装我的服务并启动它
起初它运作良好。但是几个小时后,ssl 崩溃了,我只能在客户端收到错误消息,如下所示
在 mscorlib.dll 中发生了“System.ServiceModel.CommunicationException”类型的未处理异常。 附加信息:向https://servername:49000/WCFServiceName 发出HTTP 请求时出错。这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。
运行“netsh http 删除 sslcert ipport=0.0.0.0:49000” 并删除导入的pfx,然后重做第1步和第2步可以让ssl再次工作,但问题仍然会在几个小时后出现。
肯定不是SecurityProtocol的问题,我已经尝试添加了
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
在请求之前。并且服务器和客户端都使用.Net Framework 4.5.2
我试过“netsh http show sslcert”,结果如下:
IP:port : 0.0.0.0:49000
Certificate Hash : e09280ded2322eb858b38b3250e1a488f797b269
Application ID : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
我尝试删除端口 49000 上的 sslcert 绑定,并在 IIS 中创建了一个与端口 49000 的空网站绑定,然后让我的服务监听该端口。它第一次工作并持续了大约一周,然后弹出相同的错误。
我应该从哪里开始定位和解决这个有线问题?
【问题讨论】:
标签: windows wcf ssl certificate