HTTPS通信过程分析

为什么需要HTTPS

HTTP缺点:

  1. 明文传输
  2. C/S两端不存在验证机制,无法确认对方身份,可能存在中间人攻击。

概念

  • 对称加密:客户端和服务器持有同一个密钥对数据进行加密解密。
  • 非对称加密:公钥加密私钥解密、私钥加密公钥解密
  • CA:证书认证机构,签发数字证书,保证公钥的可信度。
  • 数字证书:包含版本、序列号、有效期、颁发者、公钥等信息

数字证书是由CA颁发用于证明身份的证书,通过域名申请对应证书,域名的合法性由CA机构保证。

TLS有以下几个子协议:

  • 记录协议(Record Protocol):规定TLS收发数据的基本单位为record,类似于TCP的segment,所有子协议都必须通过记录协议发出。
  • 警报协议(Alert Protocol):向对方发出警报信息,比如:证书问题等
  • 握手协议(Handshake Protocol):两端协商TLS版本号、随机数、密码套件等信息,然后客户端通过服务端的公钥和证书上的数字签名、两端协商得到会话密钥。
  • 变更密码规范协议:通知对方后续数据使用密码加密保护

HTTPS通信过程

HTTPS通信可以划分为三个阶段:

  • TCP协议:通过三次握手建立TCP连接

  • TLS协议:四次握手建立TLS连接

  • HTTPS协议:客户端发送请求,服务端响应请求,通信报文使用密钥加密。

  • TLS 1.2 握手:使用非对称加密方式创建对称密钥,并使用对称加密完成HTTP通信。

TLS 1.2 handshake

详细过程:

  1. 客户端发送Client Hello消息到服务端,消息包含TLS版本、加密套件(Cipher Suite)、压缩算法、随机数,会话信息扩展信息等。
  2. 服务端发送Server Hello消息,消息包含服务端的TLS版本、加密套件(Cipher Suite)、会话信息
  3. 服务端发送Certificate消息,包括服务端的证书信息。
  4. 服务端发送Server Key Exchange消息,发送公钥与签名信息等。可能与Server Hello Done消息一同发送。
  5. 客户端发送Client Key Exchange消息,根据自己信任的CA列表,验证服务端证书是否可行,可信则生成一串伪随机数,并使用公钥加密,这串随机数被用于生成新的对称密钥
  6. 服务器端使用私钥解密随机数,并使用随机数生成自己的对称主密钥
  7. 客户端发送Finished消息,使用对称密钥加密这次通信的hash值。
  8. 服务端生成自己的hash值,然后解密客户端发来的信息,检查这两个值是否对应,若对应则发送Finished消息。
  9. 接下来,整个HTTP会话都是用对称密钥进行加密并传输。

TLS握手的关键点:通过生成的随机数和服务端公钥,生成新的密钥,后续通信使用这个对称密钥加密,防止中间人攻击。


HTTPS通信过程分析
https://l1n.wang/2023/计算机基础/HTTPS通信过程分析/
作者
Lin Wang
发布于
2023年2月10日
许可协议