我在Debian11服务器上有OpenSSL 1.1.1n,配置为使用MinProtocol = TLSv1.2
当服务器接收到如下ClientHello
时:
TLSv1.2 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 142
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 138
Version: TLS 1.2 (0x0303)
Record Layer Version
设置为TLSv.1,但Handshake Version
设置为TLSv1.2时,它会通过Protocol Version
警报拒绝它并关闭连接,根据https://datatracker.ietf.org/doc/html/rfc5246#appendix-E这看起来是一种可以接受的行为,不应该被拒绝。
openssl是否违反了这里的RFC,或者我是否缺少一个可以调整以修复此问题的配置参数?
另一方面,当我将MinProtocol
降低到TLSv1时,服务器接受ClientHello,并以TLSv1握手进行响应,这会导致整个会话超过TLCv1,而不被另一方接受。
我发现将MinProtocol
和MaxProtocol
设置如下:
MinProtocol = TLSv1
MaxProtocol = TLSv1.2
修复了这两个问题。