HTTP 权威指南

HTTPS 简单粗暴原理

  1. 客户端会将自己支持的加密算法,打个包告诉服务器.

  2. 服务器从客户端发来的加密算法中,选出一组加密算法和HASH算法,将自己的身份信息已证书的形式发送给客户端. 证书包含网站地址,加密用的公钥,以及证书的颁发机构.

  3. 客户端收到了服务器发来的数据包后,会做这么几件事情:
     1)验证一下证书是否合法。一般来说,证书是用来标示一个站点是否合法的标志。如果说该证书由权威的第三方颁发和签名的,则说明证书合法。
     2)如果证书合法,或者客户端接受和信任了不合法的证书,则客户端就会随机产生一串序列号,使用服务器发来的公钥进行加密。这时候,一条返回的消息就基本就绪。
     3)最后使用服务器挑选的HASH算法,将刚才的消息使用刚才的随机数进行加密,生成相应的消息校验值,与刚才的消息一同发还给服务器。

  4. 服务器接受到客户端发来的消息后,会做这么几件事情:
     1)使用私钥解密上面第2)中公钥加密的消息,得到客户端产生的随机序列号。
     2)使用该随机序列号,对该消息进行加密,验证的到的校验值是否与客户端发来的一致。如果一致则说明消息未被篡改,可以信任。
     3)最后,使用该随机序列号,加上之前第2步中选择的加密算法,加密一段握手消息,发还给客户端。同时HASH值也带上。

  5. 客户端收到服务器端的消息后,接着做这么几件事情:
     1)计算HASH值是否与发回的消息一致
     2)检查消息是否为握手消息

  6. 握手结束后,客户端和服务器端使用握手阶段产生的随机数以及挑选出来的算法进行对称加解密的传输。

你可能感兴趣的:(HTTP 权威指南)