SSL 握手过程

数据来自wireshark,为登录某https网站的过程:

1. client hello
版本号,  随机数,sessionID (第一次为空), 可选加密方法.  其他扩展消息

2. server hello
版本号,随机数(和client的随机数不一样),sessionID (32位长) , 选定的加密方法,(我这种情况看到的是TLS_DHE_RSA_WITH_AES_256_CBC_SHA)

3. 服务器发送证书,(这个比较长,我看到的是4365bytes),Server Key Exchange (512bytes), ServerHello Done

4.客户端发送:  client Key exchange.(130bytes)  , change cipher spec.(1byte) , 加密过的握手信息。(48bytes)

5.服务器发送: change cipher spec. 加密的握手信息。(48bytes)

6. SSL 握手结束。开始传输加密的应用数据。

SSL 握手

这里前两步比较容易理解。第三步,服务器发送自己的证书,这个是未加密的,说明自己的身份,证书中应该包含公钥。server Key exchange 是可选的,如果证书中没有公钥,那么这个key可以让客户端用来加密后面的握手过程。

第四步,client key exchange, 指客户端利用两个随机数计算出一个临时的密钥,将这个密钥用服务器的公钥加密。 change cipher spec 意思是这条信息以后的信息都将用上面生成的密钥加密。

第五步,如果服务器能够解密上面的信息,说明服务器有正确的私钥,是可信任的。服务器在解密获得客户端发送的临时密钥(对称密钥) , 利用这个密钥加密一段信息送给客户端。同时发送change cipher spec 表明后面的消息都用这个商定的密钥来加密。

参考: http://technet.microsoft.com/en-us/library/cc785811%28v=ws.10%29.aspx



本文地址: http://www.bagualu.net/wordpress/archives/3493 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注