HTTPS
HTTPS 在HTTP的基础上多了一层TLS协议的建立
TLS四次握手(非对称加密过程)
客户端发给服务端
- 客户端随机数
- 支持的协议,如TLS1.2
- 支持的加密算法,如RSA
服务端发给客户端
- 服务端随机数
- 接下来加密用的协议和加密算法
- CA证书
客户端发给服务端
取出CA证书中的服务器公钥
生成pre_master_key, 用公钥加密然后发给服务器
将三个随机数:客户端随机数、服务端随机数、pre_master_key 计算得出一个会话密钥
将迄今为止的通信数据生成一个摘要,也叫finish报文,用会话密钥加密后传给服务端做校验
服务端发给客户端
- 服务端使用服务端私钥解密,得到pre_master_key, 集齐三个随机数
- 将三个随机数:客户端随机数、服务端随机数、pre_master_key 计算得出一个会话密钥
- 将迄今为止的通信数据生成一个摘要,也叫finish报文,用会话密钥加密后传给客户端做校验
后续就一直使用会话密钥进行对称加密
了
问题:
- 为什么不直接传公钥,而是使用CA证书加密后的公钥
- 为什么是三个随机数,而不是一个或者两个
http发展历程
http/0.9
- 只有请求行,没有请求体和请求头
- 返回的文件内容都是以 ASCII 字符流传输的
http/1.0
- 为了处理更加复杂的请求场景,如:不同的文件类型和服务器的处理结果,引入了请求头和响应状态码
- 提供了cache机制
http/1.1
- 持久连接 / 长连接