HTTPS协议
HTTPS协议
为什么会有HTTPS
?因为HTTP是明文传输,不安全,而且HTTP
不能防止内容被恶意篡改。
HTTPS的原理
众所周知,HTTP
是应用层协议,并且是建立在传输层协议TCP
协议之上的,HTTPS
其实就是在HTTP
和TCP
之间加入了SSL/TLS
协议(TLS
是SSL
的继任者,目前基本上都用TLS
,但人们习惯上还是叫SSL
),简单来说就是在HTTP
原有的基础之上,加入了一个TLS
握手的过程。
对称加密和非对称加密
对称加密:通过密钥A对内容进行加密,加密后的内容只能用密钥A来解密。
非对称加密:非对称加密有两个密钥:公钥(Public Key)和私钥(Private Key),公钥加密的内容只能私钥解密,私钥加密的内容只能公钥解密。(私钥由服务器保存,公钥任何客户端都可以得到)
TLS握手过程
- 客户端向服务器发送
Client Hello
请求,并将以下内容发送给服务端:- TLS版本
- 加密套件
- 随机数A(客户端生成)
- 服务端发送
Server Hello
回复,并将以下内容发送给客户端:- TLS版本
- 加密套件
- 随机数B(服务端生成)
- CA证书(用于证明自己的身份是可信的,证书中包含公钥)
- 回复
Server Hello Done
表示请求结束
- 客户端判断CA证书是否有效,证书有效,生成一个随机数C,用公钥加密后发送给服务器,无效,停止访问。
- 服务器和客户端用随机数A、随机数B、随机数C生成会话密钥
- 服务器和客户端通过会话密钥进行对称加密通信,通信使用仍然是
HTTP
协议。
注意:
- 1、2是通过HTTP来通信的,内容都是明文的
- 3是通过非对称加密来通信的
- HTTPS连接建立以后,客户端和服务端都是以对称加密的方式来通信