使用openssl s_client时ClientHello的supported_versions扩展格式异常问题
我的问题是什么?
我正在使用openssl s_client测试与采用TLS 1.3协议的服务器建立连接。此前我一直无法排查服务器返回致命错误警报的原因,最终发现发送的TLS扩展之一——supported_versions扩展缺少几个字节,导致服务器终止连接。
现在我不理解为什么我的OpenSSL实现会让该扩展格式异常,不确定是遇到了bug还是我的配置存在问题。
环境信息
- Windows 10上的WSL Ubuntu 22.04.4 LTS(jammy)
- OpenSSL 3.3.1 4 Jun 2024(库版本:OpenSSL 3.3.1 4 Jun 2024)
我已尝试的操作
我已将WSL Ubuntu升级至最新软件包,也从源码编译了最新版OpenSSL,但问题依旧。
执行的命令:
openssl s_client -host <myServerHostName> -port <myServerPort> -cert cer.pem -key client.key -debug -msg -state -tls1_3
命令输出:
CONNECTED(00000003) SSL_connect:before SSL initialization >>> TLS 1.0, RecordHeader [length 0005] 16 03 01 00 e0 >>> TLS 1.3, Handshake [length 00e0], ClientHello 01 00 00 dc 03 03 a6 e8 05 13 21 0e 66 c3 fb c1 76 c0 b4 48 41 98 ed 96 fa 8d d0 c0 e7 e0 4f ab ed 32 37 a0 e5 59 20 f7 1b d5 d9 fe dd 07 93 0b a4 66 df 87 ec 56 b1 9e 97 32 8c c1 85 5c a7 e4 35 07 38 77 e5 8f 53 00 06 13 02 13 03 13 01 01 00 00 8d 00 0b 00 04 03 00 01 02 00 0a 00 16 00 14 00 1d 00 17 00 1e 00 19 00 18 01 00 01 01 01 02 01 03 01 04 00 23 00 00 00 16 00 00 00 17 00 00 00 0d 00 24 00 22 04 03 05 03 06 03 08 07 08 08 08 1a 08 1b 08 1c 08 09 08 0a 08 0b 08 04 08 05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04 00 2d 00 02 01 01 00 33 00 26 00 24 00 1d 00 20 c8 d3 d9 59 ff f5 33 28 7f 8d 6d b1 d8 4c 60 b5 dd da ee 0d 3c 4c 14 c0 5c ce 83 5e 88 40 12 50 write to 0x7fffd04fd5d0 [0x7fffd0509700] (229 bytes => 229 (0xE5)) 0000 - 16 03 01 00 e0 01 00 00-dc 03 03 a6 e8 05 13 21 ...............! 0010 - 0e 66 c3 fb c1 76 c0 b4-48 41 98 ed 96 fa 8d d0 .f...v..HA...... 0020 - c0 e7 e0 4f ab ed 32 37-a0 e5 59 20 f7 1b d5 d9 ...O..27..Y .... 0030 - fe dd 07 93 0b a4 66 df-87 ec 56 b1 9e 97 32 8c ......f...V...2. 0040 - c1 85 5c a7 e4 35 07 38-77 e5 8f 53 00 06 13 02 ..\..5.8w..S.... 0050 - 13 03 13 01 01 00 00 8d-00 0b 00 04 03 00 01 02 ................ 0060 - 00 0a 00 16 00 14 00 1d-00 17 00 1e 00 19 00 18 ................ 0070 - 01 00 01 01 01 02 01 03-01 04 00 23 00 00 00 16 ...........#.... 0080 - 00 00 00 17 00 00 00 0d-00 24 00 22 04 03 05 03 .........$.".... 0090 - 06 03 08 07 08 08 08 1a-08 1b 08 1c 08 09 08 0a ................ 00a0 - 08 0b 08 04 08 05 08 06-04 01 05 01 06 01 00 2b ...............+ 00b0 - 00 03 02 03 04 00 2d 00-02 01 01 00 33 00 26 00 ......-.....3.&. 00c0 - 24 00 1d 00 20 c8 d3 d9-59 ff f5 33 28 7f 8d 6d $... ...Y..3(..m 00d0 - b1 d8 4c 60 b5 dd da ee-0d 3c 4c 14 c0 5c ce 83 ..L`.....<L..\.. 00e0 - 5e 88 40 12 50 ^.@.P
扩展格式异常分析
查看ClientHello记录中的这一行:
05 08 06 04 01 05 01 06 01 00 2b 00 03 02 03 04
其中包含TLS扩展supported_versions,检查后发现该扩展缺失了几个长度字节。
一个有效的supported_versions扩展格式应为:
00 2b Extension supported versions 00 05 length of extension (5 bytes) 04 length of list 03 04 TLS 1.3 03 03 TLS 1.2
但我的扩展格式异常:
00 2b Extension supported versions 00 ?? length of extension (incomplete) ?? length of list (missing) 03 04 TLS 1.3 03 03 TLS 1.2
我的期望
使用带-tls1_3选项的openssl s_client时,能发送格式有效的supported_versions扩展。
内容的提问来源于stack exchange,提问作者Pedro Aviles
相关产品推荐
相关产品推荐

