私のアプリケーションは SSL over SMTP を使用しています。しかし、最後に余分なバイトの問題に直面しました。
受信したパケットは次のとおりです: (SSL レコード パケットの 16 進ダンプ)
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 ダ 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 バイトです。ただし、最後に余分なバイトが 1 つあります (最後に太字で示されています)。
最後にこの余分なバイトがあるため、次のパケットが読み取られるときに、この 20 も読み取られ、SSL_R_WRONG_VERSION_NUMBERのエラーが発生します(SSL 用の OpenSSL ライブラリを使用しています)。私が受け取った次のパケットは(パケットスニファーによると)17 03 01 00 18のようなものです...
しかし、次の読み取りが行われると、OpenSSL はパケットを 20 17 03 01 .. として読み取り、エラーが発生します (17 03 は 03 01 の間違ったバージョンであるため)
これ (末尾の余分なバイト) が SSL 標準の一部であるかどうかを知りたいです。OpenSSL でこのケースを処理する方法を教えてください。OpenSSL のバージョンは 1.0.0 です。