TLS 介绍

Wednesday, April 22, 2020

TLS

tls

在建立了 TCP 通讯之后,https 就会基于 TLS 协议进行握手通讯了。这里主要讲讲ECDHE 的握手流程。

ECDHE 握手

  • 建立 TCP 连接后,客户端会先发一条消息,把客户端的版本号,支持的密码套件,还有随机数(Client Random)发给服务器
  • 服务器收到消息后,选一个密码套件,同时也给出一个随机数(Server Random),同时为了证明自己的身份,把证书也给了客户端
  • 因为是 ECDHE,再发送了证书后,服务器会再发一个 Server Key Exchange,也就是公钥,用来实现密钥交换算法
  • 之后是服务器发送完毕的消息,Server Hello Done

在这里,一个消息来回就结束了,两个 TCP 包,客户端和服务器共享了两个随机数,和一个 Server Params 公钥

  • 客户端走证书链逐级验证,确认证书,再用证书公钥验证签名,确认服务器身份
  • 客户端也生成一个 Client Params 公钥,发给服务器

这时服务器和客户端共享了 Client Params, Server Params, 然后用 ECDHE 算法算出一个 Pre Master

  • 用这三个参数,就可以生成用于加密会话的主密钥,Master Secret
  • 再用PRF 扩展更多的密钥,比如会话密钥,服务密钥等
  • 这时握手就快结束了,客户端发送Change Cipher Spec,再发一个 Finished,把之前发送的消息做个摘要,发给服务器做个验证。
  • 服务器做同样的操作,握手正式结束,后面收发消息就加密了

tls2

网络

HTTPS 介绍