我的应用程序使用 SSL over SMTP。但我最后遇到了额外字节的问题。
我收到的数据包如下:(SSL 记录数据包的十六进制转储)
17 03 01 01 00 9A 07 74 E3 4B E0 07 17 71 38 BF 29 7E 70
E9 14 CC B1 97 77 4C B9 AB A0 9F 88 7B D4 ED 14 8E 97 F2
5A BE 46 56 D4 12 BC 15 01 49 EE CE A1 ED 3F D3 6E 7F AA
DC 6B DF 41 11 74 7B 55 B8 D3 3E 8D EF 96 52 B0 BD 50 35
09 E7 2A FF 0E 39 58 C7 91 99 95 22 6F B0 73 57 28 B4 EA
C6 28 4C DC 5C DA 6C 31 FB 63 71 7D 08 F0 DD 78 C4 08 C5
27 90 04 C7 09 59 E4 83 F4 4D 9A 7B 65 E9 AF 38 44 B4 CD
9E 4D BE 80 0D 07 24 8D C3 79 99 DC 02 81 D7 97 21 16 0B
28 44 82 ED E4 5F E6 91 81 A5 28 C1 C8 92 60 36 4E DE 27
AF D0 2B EE FB 9D 12 9C 2B 4F 3F 29 F2 04 8F DC 21 39 4F
80 23 7E 78 3C A0 29 E0 67 E7 9F 90 B6 1F D4 08 63 3E CE
73 E1 17 72 8D B1 8C 3D A8 59 C0 0F 03 59 7A A6 5D F9 7A
40 57 D6 8D 94 48 93 BF D8 17 C6 70 79 36 13 D0 F1 D1 D2
69 D4 05 9D 67 86 6D E9 66 D0 83 4A D8 5E 20
从 SSL 3.1 协议看,这个数据包的长度是 256 字节。但最后多了一个字节(最后以粗体显示)。
由于末尾有这个额外的字节,当读取下一个数据包时,也会读取这个 20 并导致SSL_R_WRONG_VERSION_NUMBER错误(我正在使用 OpenSSL Library for SSL)。我收到的下一个数据包就像(根据数据包嗅探器)17 03 01 00 18 ...
但是当下一次读取完成时,OpenSSL 将数据包读取为 20 17 03 01 .. 这会导致错误(因为 17 03 是 03 01 的错误版本)
我想知道这(最后的额外字节)是否是 SSL 标准的一部分。请建议我如何在 OpenSSL 中处理这种情况。OpenSSL 版本是 1.0.0。