如何解决HelloVerifyRequest上的Dtls握手中使用的SSL版本错误
我正在C中实现DTLS 1.2协议。在使用openSSL测试客户端时,我发现OpenSSL发送的帧之一没有使用正确的Dtls版本(1.2),而是使用了较旧的版本(1.0)。
C中的客户端仅支持DTLS1.2,因此拒绝OpenSSL发送的帧。
C客户端发送的HelloClient:
Frame 2461: 109 bytes on wire (872 bits),109 bytes captured (872 bits) on interface 0
Ethernet II,Src: Infineon_00:00:01 (00:03:19:00:00:01),Dst: Tp-LinkT_dc:4e:82 (50:3e:aa:dc:4e:82)
Internet Protocol Version 4,Src: 192.168.88.73,Dst: 192.168.88.77
User Datagram Protocol,Src Port: 50003,Dst Port: 60003
Datagram Transport Layer Security
DTLSv1.0 Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: DTLS 1.2 (0xfefd)
Epoch: 0
Sequence Number: 0
Length: 54
Handshake Protocol: Client Hello
来自OpenSSL服务器的响应:
Frame 2464: 90 bytes on wire (720 bits),90 bytes captured (720 bits) on interface 0
Ethernet II,Src: Tp-LinkT_dc:4e:82 (50:3e:aa:dc:4e:82),Dst: Infineon_00:00:01 (00:03:19:00:00:01)
Internet Protocol Version 4,Src: 192.168.88.77,Dst: 192.168.88.73
User Datagram Protocol,Src Port: 60003,Dst Port: 50003
Datagram Transport Layer Security
DTLSv1.0 Record Layer: Handshake Protocol: Hello Verify Request
Content Type: Handshake (22)
Version: DTLS 1.0 (0xfeff)
Epoch: 0
Sequence Number: 0
Length: 35
Handshake Protocol: Hello Verify Request
我强制OpenSSL使用DTLS 1.2版并运行以下命令: openssl.exe s_server -nocert -psk 01234567 -accept 443 -cipher PSK-AES128-GCM-SHA256 -dtls1_2
我在TLS(https://tools.ietf.org/html/rfc5246#appendix-E)的RFC中看到了
TLS versions 1.0,1.1,and 1.2,and SSL 3.0 are very similar,and use
compatible ClientHello messages; thus,supporting all of them is
relatively easy. Similarly,servers can easily handle clients trying
to use future versions of TLS as long as the ClientHello format
remains compatible,and the client supports the highest protocol
version available in the server.
没有为HelloRequestVerify(rfc5246或rfc6347)指定任何内容,但这是否意味着应该接受1.0到1.2之间的任何版本?
还是OpenSSL中的错误?
注意:如果我继续进行DTLS握手,则OpenSSL发送的每个其他帧都将使用正确版本的DTLS(1.2)。
解决方法
根据RFC 6347,4.2.1. Denial-of-Service Countermeasures
但是,为了避免进行版本协商的要求 在最初的握手中,应使用DTLS 1.2服务器实现 DTLS版本1.0,与预期的TLS版本无关 进行谈判。
(该部分包含有关用法的更多信息。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。