SSL握手过程

记录一下SSL的握手过程,里面涉及到了很多基础概念,例如密码学,证书,PKI等

详细叙述:

1、浏览器将自己支持的加密规则(也就是 CipherSuite )发给服务器

2、服务器端收到请求,然后从客户支持的 CipherSuite 中选出一个应答,并发送给客户端公钥证书和选用的 HASH 算法

3、客户端收到公钥之后,利用自己的信任的根证书对收到的公钥进行验证.若通过,客户端随机生成对称密钥 (Pre-Master secret),然后使用公钥对对称密钥进行加密,并计算连接中全部报文信息的 hash ,再利用生成的对称密钥对 hash 值加密,然后把公钥加密的对称密钥及对称密钥加密的 hash 值发送给服务器.

4、服务器利用自己的私钥对利用公钥加密的对称密钥进行解密,得到对称密钥. 再利用对称密钥解密 hash 值,对 hash 值进行验证.在验证成功后,会返回给客户端 Finish 报文。(至此,ssl 连接建立成功)

5、ssl 连接建立完成之后信息的传输加密过程是这样的:

客户端:先用对称密钥加密要传输的信息,再利用 hash 算法得出加了密的信息的 hash 值.再利用公钥对 hash 值进行加密,之后把对称密钥加密了的信息和利用公钥加密后信息的 hash 值,传输给服务器.

服务器: 与客户端基本相同,不过把公钥加密换做私钥加密。

refer:

http://mp.weixin.qq.com/s/W620Pdu6qvoqjacSRPRVyg