SSL 握手问题
请教下各位高手,本人在分析SSL协议数据时遇到了问题
SSL握手时主要有如下过程,其中 Certificate Verify 这包数据不知道是如何组成的。我做的是模拟客户端与服务器通讯,但是我不知道Certificate Verify 要发的是什么,见下面数据红色部分,路过的高手请指教下。
C->S: Client Hello
S->C: Server Hello
S->C: Server Certificate
S->C:Certificate Request
S->C:Server Hello Done
C->S: Client Certificate
C->S: Client Key Exchange
C->S: Certificate Verify(0x106个字节的数据时如何组成的?)
C->S: Changer Cipher_Spec
C->S: Client Finish
下面是每包的具体数据:
16 03 00 00
51|01 00 00 4d 03 00 4d 67 59 c6 d4 56 5e c8 4dClient Hello
ca 8e 33 a9 0e 95 e0 48 cd f1 c8 c9 90 2b 15 ae
42 e9 a1 4a 7f c6 3e 00 00 26 00 39 00 38 00 35
00 16 00 13 00 0a 00 33 00 32 00 2f 00 05 00 04
00 15 00 12 00 09 00 14 00 11 00 08 00 06 00 03
01 00
16 03 00 00
4a|02 00 00 46|03 00 4d 67 59 92 7d e4 d6 b9 62Server Hello
d2 ca cf f6 c1 03 0a 09 de ce 2b d8 18 06 a7 8c
11 d0 10 a4 8b 57 89 20 3c b8 1f 7e 87 82 d8 de
22 44 92 26 34 37 0d 74 8f e3 1b b7 ab f7 63 0f
f3 73 de 7e 57 3d 48 bb 00 35 00
16 03 00 02
44|0b 00 02 40|00 02 3d 00 02 3a|30 82 02 36 30Server Certificate
82 01 1e a0 03 02 01 02 02 01 00 30 0d 06 09 2a
86 48 86 f7 0d 01 01 05 05 00 30 00 30 1e 17 0d
31 31 30 32 32 35 30 37 32 37 30 32 5a 17 0d 32
31 30 32 32 32 30 37 32 37 30 32 5a 30 00 30 81
9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00
03 81 8d 00 30 81 89 02 81 81 00 82 c4 c8 98 92
ad 7d 14 a0 7d f2 dd 26 e6 ac 45 d0 9a 6e 14 13
42 6d 86 11 9d 68 53 e5 88 32 af c4 7f f5 0e 91
23 3f 3e 82 58 3f 6d 43 b9 16 f5 f9 4e 62 59 4c
e0 e5 aa 1d 77 75 2c ab 12 17 ab fc cc bc 13 80
89 39 f6 f3 e1 d8 25 50 ab d0 3f fa 83 7f e7 ab
b6 0e 9f 75 cc 85 2d a8 16 c6 bb 1e bc e1 da 1a
5e 84 5d 6e cc a6 a1 0c 2b df eb d6 4d d2 18 e9
74 c4 cb d0 5a ba 76 46 72 0f c1 02 03 01 00 01
a3 3f 30 3d 30 0c 06 03 55 1d 13 01 01 ff 04 02
30 00 30 1d 06 03 55 1d 0e 04 16 04 14 19 04 81
62 54 46 12 ba 47 fa 49 d5 11 1a 27 7d 4c d3 62
7c 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 05
a0 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00
03 82 01 01 00 2e a6 7a b2 8f 78 be 18 5d 06 3c
69 06 34 65 bc a5 28 10 a5 7d 6c 20 10 29 ec 9d
93 56 bf 65 e9 61 6b 3b 1e 15 41 d9 6b 45 0a 81
93 22 85 c1 ff fb 16 5a a0 44 e9 94 43 83 dd 69
36 d4 4b a8 b4 b0 2d de a0 44 8d 55 b6 be 58 4b
e4 3c 69 e4 11 39 f4 4b e6 2b 18 96 b4 71 5a f4
cb 63 69 92 60 03 cf de 8e 9d 39 cc 61 e3 a7 8b
86 c9 f8 d9 7f be a6 45 30 56 3b b8 47 c5 fa 28
ed 44 ee c2 9c aa bf df 02 36 ff 50 1e b0 80 dd
0d 83 e3 1b b3 ae 93 f3 f8 df 46 81 f1 de ba e4
5e 7c 31 d7 21 8a 40 a4 1f 17 32 44 87 e1 89 e3
53 4a 85 bb 77 89 3b c0 71 03 39 81 74 44 31 b0
55 ae 9e 1a d1 60 41 c2 c5 97 4a dd 1a cb d1 86
39 42 a7 c4 bb 4c 08 ee 39 42 78 d1 86 ed 2b ed
e5 7d ea a4 99 8c 14 fc a2 0c 71 9d 6c ec ba 61
8e 2c 0a 40 2e d6 28 36 1b a3 07 f6 19 df ac 8f
e6 94 84 43 aa
[解决办法]
SSL 有自己的SOCKET, SSL 是建立在TCP/IP以上的,CV 是验证证书 也就是对方的证书你需要发送过来 通过服务器公钥验证,是否正确。
说实话,没看懂!
[解决办法]
不懂帮顶。。。
[解决办法]
很简单的理解就是 SSL协议是在TCP/IP之上的协议,是将TCP/IP再进行加密一次进行传输,TCp/IP协议中传输的信息是直接传输,若有人在网络中截取该信息,只要将TCP/IP包进行拆解,就可以得到传输信息。通过SSL将信息进行加密后传输,然后目的地址再进行解密,他们有一个密钥,若在中途数据被别人截取了,没有密钥,只能显示乱码。
[解决办法]
表示看不懂
[解决办法]
When this message will be sent:
This message is used to provide explicit verification of a client
certificate. This message is only sent following a client
certificate that has signing capability (i.e. all certificates
except those containing fixed Diffie-Hellman parameters). When
sent, it will immediately follow the client key exchange message.
Structure of this message:
struct {
Signature signature;
} CertificateVerify;
The Signature type is defined in 7.4.3.
CertificateVerify.signature.md5_hash
MD5(handshake_messages);
Certificate.signature.sha_hash
SHA(handshake_messages);
Here handshake_messages refers to all handshake messages sent or
received starting at client hello up to but not including this
message, including the type and length fields of the handshake
messages. This is the concatenation of all the Handshake structures
as defined in 7.4 exchanged thus far.
这个消息发的是一段签名值,用哈希算法算的。其实就是一段MAC数据。 建议你根据你SSL的版本去看相应的RFC,TLS1.0是RFC2246,TLS1.2是RFC5246 期中你想知道的部分在7.4.8节
嘻嘻,求给分