TLS_Flow

TLS流程

首先先看一下TLS握手的流程(SSL已经被废弃)

1.Client-> Server Client Hello
client向server发起请求,并且提供自己支持的TLS版本,加密套件列表以及一个随机数

TLS-1

Server->Client Server Hello

Server回复Client消息,包括

  • 握手协议消息类型-Server Hello
  • TLS 版本-1.2
  • 生成的随机数
  • 选择的加密套件
    为什么说是加密套件? 我们看这里的

Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)

  • ECDHE-椭圆曲线迪菲赫尔曼密钥交换算法, 具有前向保密特征,在握手阶段生成共享密钥对使用
  • RSA-非对称加密算法,用于签名和认证
  • AES_128_GCM-对称加密算法,用于后续会话的加密过程
  • SHA256-哈希算法,由于检验数据完整性

Server Hello

Server->Client :Certificate, Server Key Exchange, Server Hello Done

Server给client发送自己的证书用于client验证服务端是否可信
Certificate

Server Key Exchange: 服务端DH参数,参与生成Master secret

Server Hello Done: 通知client加密套件协商结束

Server Key Exchange and Hello Done

Client-Server: Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message

Client Key Exchange: 客户端DH参数,用于生成主密钥

Change Cipher Spec: 通知Server,客户端已经准备好进行密文通信

Encrypted Handshake Message: 握手结束的Finished消息,首次使用协商好的对称密钥,确认双方拥有相同的密钥
Client Key Exchange

Server->Client :New Session Ticket, Change Cipher Spec, Encrypted Handshake Message

New Session Ticket: Server在TLS握手过程中生成的Session Ticket,客户端保存这个 Ticket,以后再次连接同一个服务器时,可以用它来快速恢复会话,而不用重新走完整的握手流程。

这个ticket是有有效期的。
Session Ticket

Change Cipher Spec: 通知Client,Server已经准备好进行密文通信

Encrypted Handshake Message: 握手结束的Finished消息

*这几个消息可能不在一个tcp包中,如下图
multi pdu

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2015-2025 Xudong0722
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信