HTTPS协议


HTTPS协议

为什么会有HTTPS?因为HTTP是明文传输,不安全,而且HTTP不能防止内容被恶意篡改。

HTTPS的原理

众所周知,HTTP是应用层协议,并且是建立在传输层协议TCP协议之上的,HTTPS其实就是在HTTPTCP之间加入了SSL/TLS协议(TLSSSL的继任者,目前基本上都用TLS,但人们习惯上还是叫SSL),简单来说就是在HTTP原有的基础之上,加入了一个TLS握手的过程。

HTTPS结构

对称加密和非对称加密

对称加密:通过密钥A对内容进行加密,加密后的内容只能用密钥A来解密。

非对称加密:非对称加密有两个密钥:公钥(Public Key)和私钥(Private Key),公钥加密的内容只能私钥解密,私钥加密的内容只能公钥解密。(私钥由服务器保存,公钥任何客户端都可以得到)

TLS握手过程

  1. 客户端向服务器发送Client Hello请求,并将以下内容发送给服务端:
    • TLS版本
    • 加密套件
    • 随机数A(客户端生成)
  2. 服务端发送Server Hello回复,并将以下内容发送给客户端:
    • TLS版本
    • 加密套件
    • 随机数B(服务端生成)
    • CA证书(用于证明自己的身份是可信的,证书中包含公钥)
    • 回复Server Hello Done表示请求结束
  3. 客户端判断CA证书是否有效,证书有效,生成一个随机数C,用公钥加密后发送给服务器,无效,停止访问。
  4. 服务器和客户端用随机数A、随机数B、随机数C生成会话密钥
  5. 服务器和客户端通过会话密钥进行对称加密通信,通信使用仍然是HTTP协议。

注意:

  • 1、2是通过HTTP来通信的,内容都是明文的
  • 3是通过非对称加密来通信的
  • HTTPS连接建立以后,客户端和服务端都是以对称加密的方式来通信