错误请求已中止:无法创建SSL/TLS安全通道.仅在Windows Server 2012上



我知道关于这个错误几乎没有类似的问题,但我的问题有点不同,因为我的代码在本地运行,实际上是从Windows 10运行的,当我在生产环境(Windows Server 2012(上部署它时,它不起作用。

这就是故事。我试图联系服务,但我收到了一个错误:

System.Net.Http.HttpRequestException:发送请求时出错--->System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道。

此错误几天前开始发生,我们收到了来自该服务的电子邮件,该邮件告诉他们不再支持某些密码。这是他们的电子邮件:

这意味着从12月1日起,我们将只支持以下密码套件:

Cipher suites (TLS 1.3):
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
Cipher suites (TLS 1.2):
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
CDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384

我发现了一些建议包括所有TLS协议的解决方案,我已经做到了。这是我代码的一部分:

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls 
| SecurityProtocolType.Tls11 
| SecurityProtocolType.Tls12 
| SecurityProtocolType.Ssl3;

但问题是一样的。所以调用服务在我的本地上有效,但在Windows Server上不起作用。

我还在注册表中编译了密码套件(位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\LOCAL\SSSL\000010003(我已经看到我的Windows 10和Windows服务之间有区别。所以我试着手动将所有密码从我的电脑复制到windows服务器,但仍然会出现同样的错误。

所以我再也不知道问题出在哪里了。请帮忙!

p.s.我忘了提我尝试了很多不同的解决方案,比如只包括TLS1.2协议。这是同样不起作用的代码的一部分:

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

这应该是密码套件的问题。

有些密码套件在以前版本的Windows上不可用。

使用sslabs或Wireshark扫描您的应用程序以了解问题。启用目标服务器上禁用的受支持的密码套件。

  • 修复:Windows Server 2008 R2/2012 R2中的SSL握手错误
  • TLS/SSL中的密码套件(Schannel SSP(
  • SSL服务器测试

最新更新