首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 2012 R2上TLS 1.2握手失败

Windows 2012 R2上TLS 1.2握手失败
EN

Stack Overflow用户
提问于 2022-09-01 12:45:55
回答 1查看 88关注 0票数 0

我们创建了使用Kestrel服务器的.NET 6 gRPC服务器和HTTPS的服务器证书。我们还创建了一个连接到上述服务器的.NET 6 gRPC客户机,并提供了用于身份验证的客户端证书。

我们在Windows 10和Windows 2016上成功地测试了客户机和服务器。我们现在正在将客户端和服务器部署到Windows 2012 R2服务器上,并将遇到TLS1.2问题。

使用Wireshark,我们可以看到客户机(运行在Server 2012 R2上)发送TLSv1.2 "Client Hello“开始握手。该服务器(运行在另一台服务器2012 R2服务器上)立即使用具有“协议版本(70)”描述的TLSv1.2致命警报进行响应。根据这篇文章来自微软的说法,该警报意味着“客户端试图协商的协议版本已被识别,但不受支持。例如,出于安全原因,可能会避免旧协议版本。”

我们已经通过注册表TLS1.0和1.1显式禁用了,但没有禁用TLS 1.2。根据这篇文章来自微软,默认情况下,Windows 2012 R2上启用了TLS1.2。我甚至确认,以下两个注册表项都不存在,如果指定并分别设置为1和0,可以禁用TLS 1.2:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\DisabledByDefault HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client已启用

这让我相信密码套件可能是问题所在。这就是我对TLS的理解非常有限的地方。我从Wireshark捕获中可以看到,这些是从客户端传递的密码套件:

代码语言:javascript
运行
复制
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)
Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
Cipher Suite: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)

在服务器上,在gpedit.msc >计算机配置>管理模板>网络> SSL配置设置中,我可以看到没有配置"SSL密码套件顺序“设置状态,因此应该使用工厂默认密码套件顺序。根据该设置的说明,默认顺序应为:

代码语言:javascript
运行
复制
TLS 1.2 SHA256 and SHA384 cipher suites:
    TLS_RSA_WITH_AES_128_CBC_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
    TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384
    TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
    TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521
    TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
    TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_NULL_SHA256
TLS 1.2 ECC GCM cipher suites:
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
    TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
    TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521

在客户机和服务器(TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_DHE_DSS_WITH_AES_256_CBC_SHA256和TLS_DHE_DSS_WITH_AES_128_CBC_SHA256)中都存在四个TLS密码套件,所以我认为这意味着TLS协商应该找到一个匹配并使用它。

这让我困惑于还有什么可能是问题。如有任何建议,将不胜感激。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73569562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档