TLS1.3协议详解与握手过程

本文深入解析了TLS1.3协议的核心概念,包括密钥生成、握手流程、证书验证等关键环节,帮助读者理解安全通信的实现原理。

TLS1.3

客户端和服务端都生成一个随机数, 通过这个随机数生成一对密钥, 分私钥和公钥, 通过公钥加密, 私钥解密, 保证数据传输的安全性

client先发送一个client hello, 里面包含了支持的加密算法, 和一个随机数, 和公钥

服务端返回一个server hello, 里面包含了选择的加密算法, 服务端返回一个证书, 证书里包含了服务端的公钥

这样双方就都有了

  1. 对方的公钥
  2. 自己的私钥
  3. 两个随机数

通过这3个东西, 双方都可以生成一个一模一样的密钥, 用这个密钥对称加密数据, 保证数据传输的安全性

Tls握手过程

  1. client hello
  2. server hello
  3. 服务端返回证书
  4. 服务端返回server key exchange
  5. 服务端返回server hello done
  6. 客户端验证证书
  7. 客户端返回client key exchange
  8. 客户端返回change cipher spec
  9. 客户端返回finished
  10. 服务端返回change cipher spec
  11. 服务端返回finished
  12. 数据传输
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
客户端                                     服务器
   |                                         |
   |        1. 请求建立 TLS 连接            |
   | ---------------------------------->    |
   |                                        |
   |        2. 发送服务器证书(CA证书)       |
   | <----------------------------------    |
   |                                        |
   |     3. 验证证书,提取公钥              |
   |                                        |
   |     4. 生成会话密钥,用公钥加密        |
   | ---------------------------------->    |
   |                                        |
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
客户端                                    服务端
   |                                        |
   |       1. ClientHello                   |
   | ------------------------------------> |
   |                                        |
   |       2. ServerHello                   |
   |          Certificate                   |
   |          ServerKeyExchange (包含签名)   |
   | <------------------------------------ |
   |                                        |

因为公钥在CA证书里, 所以需要验证证书, 并且提取公钥. 并且其中有一个信任链和数字证书

  • 信任链: 看是不是信任最顶层的CA
  • 数字证书: 证书里包含了公钥, 证书的签名, 证书的签发者, 证书的有效期等信息. 通过这个签名和公钥就可以认证证书的真实性, 然后看信任链.
使用 Hugo 构建
主题 StackJimmy 设计