Openssl 与TLS1.2客户端和TLS1.3服务器的握手失败

Openssl 与TLS1.2客户端和TLS1.3服务器的握手失败,openssl,tls1.2,libssl,tls1.3,Openssl,Tls1.2,Libssl,Tls1.3,在openssl升级到1.1.1版本后,我有了一个cenario,其中我的客户机(odbc)运行在TLS1.2上,我的服务器(数据库)运行在TLS1.3上,它在 客户端出现以下错误 “SSL握手失败原因[错误:1407743E:SSL例程:SSL23\u GET\u SERVER\u HELLO:tlsv1警报不适当回退]。” 在TLS 1.3文档中写到,默认情况下启用回退保护,并且当TLS 1.2客户端与TLS 1.3服务器通信时,服务器发送用于回退保护的特殊字节 以下是我的疑问。 --我必须

在openssl升级到1.1.1版本后,我有了一个cenario,其中我的客户机(odbc)运行在TLS1.2上,我的服务器(数据库)运行在TLS1.3上,它在 客户端出现以下错误

“SSL握手失败原因[错误:1407743E:SSL例程:SSL23\u GET\u SERVER\u HELLO:tlsv1警报不适当回退]。”

在TLS 1.3文档中写到,默认情况下启用回退保护,并且当TLS 1.2客户端与TLS 1.3服务器通信时,服务器发送用于回退保护的特殊字节

以下是我的疑问。 --我必须在客户端处理这些特殊字节吗? --TLS 1.2客户端是否需要任何其他处理来与TLS 1.3服务器通信?
--还是有其他失败的原因

我猜事情就是这样的:

1) 客户端发送TLS 1.2握手
2) 服务器关闭连接,因为它只支持TLS 1.3
3) 使用TLS 1.1握手和回退SCSV进行客户端重试(请参阅RFC 7507)
4) 服务器发送错误消息:不适当的回退

初始连接失败(步骤2),因为客户端请求1.2,而服务器不支持它。客户端将使用1.1重试,以防服务器可能支持此版本。发送回退SCSV是为了表明1.1不是客户端支持的最高版本。

根据SCSV RFC(7507):

如果ClientHello.cipher_套件中出现TLS_FALLBACK_SCSV,并且服务器支持的最高协议版本高于ClientHello.client_版本中指示的版本,则服务器必须以致命的不适当_FALLBACK警报进行响应。


为了回答您的问题,我相信您提到的特殊字节是SCSV,但这是由客户端发送并由服务器处理的,因此在客户端没有什么可做的。我相信失败是由于客户端和服务器没有一个通用的TLS版本来进行通信。如果客户机只支持1.2,而服务器只支持1.3,他们将无法就版本达成一致,连接将失败。在服务器上启用TLS 1.2或在客户端启用TLS 1.3应该允许他们进行通信。

Re“…TLS 1.3 RFC(7507)…”,RFC 7507是在2015年编写的,它没有提到TLS 1.3。对于TLS 1.3,请参见[RFC 8446:“传输层安全(TLS)协议版本1.3”],特别是“附录D.向后兼容性”。skomisa,对不起,这应该是“SCSV RFC(7507)”,而不是“TLS 1.3 RFC(7507)”。感谢当前针对TLS 1.3的RFC。