我有一个.NET WebService调用,它被设置为使用TLS1.1或更高版本。这在我的本地开发中有效,但是当我移动到我们的开发服务器时,我会收到以下错误:
无法为xxx数据创建ExecuteRequest --请求被中止:无法创建SSL/TLS安全通道。
在代码中,我有tls设置:
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13 | SecurityProtocolType.Ssl3;我已经在服务器上验证了注册表设置对于启用TLS1.1、1.2等等是正确的.通过检查:*HKEYLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\ProtocolsTLS 1.1,TLS 1.2*,在这些位置上,对于“客户端”和“服务器”键,我都有DisabledByDefault =0和Enabled =1。
在windows系统日志中,有一个Schannel错误: EventID 36887:从远程端点接收到致命警报。TLS协议定义的致命警报代码为40。
我不知道从这里往哪里走。我觉得这可能是一个简单的设置或注册表调整,但我现在迷路了。
提前感谢您的帮助
发布于 2020-03-06 22:11:21
如果我正确地理解了您,那么您有一个在一个服务器上工作的代码,而不是另一个服务器上的代码。在这种情况下,似乎至少您已经正确配置了.Net框架,但正如其中一条评论所建议的那样,您应该检查操作系统是否支持TLS1.1(也许值得检查一下您是否运行在完全相同的.net框架版本上)。
我看到您使用的是win server 2012,在默认情况下似乎没有启用它。以下是MS docs 这里的引文
早期版本的Windows,如Windows 7或Windows 2012,默认情况下不启用TLS 1.1或TLS 1.2,以便使用WinHTTP进行安全通信。对于这些早期版本的Windows,请安装Update 3140245以启用下面的注册表值,可以将注册表值设置为将TLS 1.1和TLS 1.2添加到WinHTTP的默认安全协议列表中。
试着检查文档并验证TLS 1.1。在操作系统中启用。
如果您试图连接到的服务器支持TLS 1.2,那么我根本不会使用TLS 1.1,而只是强制all使用TLS 1.2。
https://stackoverflow.com/questions/60569959
复制相似问题