我正在尝试使用 Windows 套接字“手动”实现 SSL 3.0(我知道 openSSL 和 MS SSL API 就在那里,但我只是想这样做是为了好玩并从内部视图中学习它)
我用来启动新 SSL 会话的第一条消息(记录),我发送到 SSL 服务器(真实服务器,如https://yahoo.com:443)的第一条 TCP 消息就是这样(十六进制) :
"16 03 00 00 19 01 00 00 15 03 00 bb 80 f3 8c 5d db f7 6c 94 56 d8 34 7a b5 9d 02 00 39 00"
Explanation:
16 //-- (22 in decimal) SSL3_RT_HANDSHAKE
03 00 //-- version : 3.0
00 19 //-- length of record excluding 5 bytes of header
01 //-- SSL3_MT_CLIENT_HELLO
00 00 15 //-- length of the following data
03 00 //-- SSL version 3.0
bb 80 f3 8c 5d db f7 6c 94 56 d8 34 7a b5 9d 02 00 //---- Random 16 bytes
39 //-- TLS_DHE_RSA_AES_256_CBC_SHA
00 //-- Compression method : none
但服务器回复我(十进制):
21-3-0-0-2-2-40
通过这些引用,我知道 SSL 握手协议失败了,但没有任何关于原因的线索。出了什么问题?