目录
论什么是HTTPS
HTTPS,超文本传输安全协议(全称: Hypertext Transfer Protocol Secure)
相比于HTTP超文本传输协议,HTTPS更加注重安全性,是HTTP的安全版
可以看到,HTTPS在HTTP的基础上新增了一层SSL。
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
为什么需要HTTPS
传统的HTTP是直接通过明文在浏览器和服务器之间传输信息,这样使得信息的传输非常不安全,如果信息在传输的过程中被攻击者劫持,则可能造成信息泄露甚至更严重的后果。因此,我们引入HTTPS,对传输的信息进行加密,保障传输数据的安全。
HTTPS采用 对称加密 和 非对称加密 结合的方式来保护浏览器和服务端之间的通信安全。
如果想了解什么是对称加密和非对称加密,可以看之前密码学概述的博客:
HTTPS加密过程
- 客户端向服务器发送连接请求,请求中包括:SSL/TSL版本号、客户端支持的加密算法列表、产生一个随机数(第一随机数)、一个Client Hello字符串
- 服务器返回连接响应,响应包括:确认SSL/TSL版本号、确认的加密算法列表、产生一个随机数(第二随机数),并且返回数字证书,证书中包含公钥,发送Hello Done表示发送完毕。
- 客户端接收到证书后验证证书是否有效
- 确认有效后,客户端生成一个随机数(第三随机数),用证书的公钥加密,将加密后的密钥发送给服务器
- 服务器用私钥解密密钥,通过计算第一、二、三随机数的哈希值作为会话密钥(对称密钥)。客户端也计算出该会话密钥。
- 服务器用会话密钥加密消息发送给客户端,客户端也用该会话密钥解密信息。
- 之后服务器和客户端的通信都通过此会话密钥进行加密解密。