首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HelloVerifyRequest上Dtls握手中使用的SSL版本错误

在HelloVerifyRequest上Dtls握手中使用的SSL版本错误
EN

Stack Overflow用户
提问于 2020-08-21 13:23:58
回答 1查看 753关注 0票数 2

我正在用C实现DTLS1.2协议。在用openSSL测试客户机时,我注意到OpenSSL发送的一个框架不是使用正确的DTLS版本( 1.2 ),而是使用较早的版本(1.0)。

C中的客户机只支持DTLS1.2,因此拒绝OpenSSL发送的帧。

C客户端发送的HelloClient:

代码语言:javascript
复制
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服务器的响应:

代码语言:javascript
复制
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使用版本1.2的DTLS运行以下命令: openssl.exe s_server -nocert -psk 01234567 -accept 443 -cipher PSK-AES128-GCM-SHA 256 -dtls1_2

我在TLS的RFC (https://www.rfc-editor.org/rfc/rfc5246#appendix-E)中看到过

代码语言:javascript
复制
   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中的一个bug?

注意:如果我继续进行DTLS握手,那么OpenSSL发送的每一个进一步的帧都使用了DTLS (1.2)的正确版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-24 18:23:42

根据RFC 6347,4.2.1。拒绝服务对策

但是,为了避免在初始握手中进行版本协商的要求,DTLS 1.2服务器实现应该使用DTLS版本1.0,而不管预期协商的TLS版本是什么版本。

(该部分包含有关该用法的更多信息。)

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

https://stackoverflow.com/questions/63523748

复制
相关文章

相似问题

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