HTTP和HTTPS

606 词

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

  • 持久连接 / 长连接
留言