HTTPS

HTTP over SSL/TLS

定义:在HTTP之下增加一个安全层

本质:在客户端与服务器之间用非对称加密协商出一套对称秘钥,每次传输用此秘钥加密解密,为啥不直接非对称加密,因为效率低

流程:

  1. Client Hello,客户端请求建立TLS连接,发送tls版本、可选加密套件,客户端随机数

  2. Server Hello,发送tls版本、可选加密套件,服务端随机数

  3. 服务器发回证书

  4. 客户端验证服务器证书

    服务器证书包含了公钥和服务器主机名、地址与证书的签名,签名可由下方证书签发机构的公钥验证

    证书签发机构的证书

    根证书机构的证书(这个在本地,信息可从上方证书查询)

  5. 客户端信任服务器证书后,和服务器协商对称秘钥(客户端会再生成一个premaster-secret,加密后给到服务端,两端各自使用自己的随机数生成Master secret,里面包含各自的加密秘钥和MAC secret)

    两个随机数,客户端服务器各一个加密秘钥

  6. 使用秘钥开始通信

使用随机数是为了防止别人使用你的老数据攻击服务器

使用两个秘钥是为了防止别人把你发出的数据原样发给你,这样你解密不会出错,可能会误认为是正常数据