跳到主要内容

3.2. SessionTicket TLS 扩展

SessionTicket TLS 扩展基于 [RFC4366]。票据的格式是一种不透明 (opaque) 结构, 用于携带会话特定的状态信息。该扩展可以在 ClientHello 和 ServerHello 中发送。

如果客户端拥有它想用来恢复会话的票据, 则它在 ClientHello 中的 SessionTicket 扩展里包含该票据。如果客户端没有票据、且准备在 NewSessionTicket 握手消息中接收一个票据, 则它 必须 (MUST) 在 SessionTicket 扩展中包含一个零长度票据。如果客户端不准备在 NewSessionTicket 握手消息中接收票据, 则它 不得 (MUST NOT) 包含 SessionTicket 扩展, 除非它发送的是通过其他方式从服务器收到的非空票据。

服务器使用零长度的 SessionTicket 扩展向客户端表明, 它将使用 3.3 节描述的 NewSessionTicket 握手消息发送一个新的会话票据。如果服务器希望使用 NewSessionTicket 握手消息向客户端签发新票据, 则它 必须 (MUST) 在 ServerHello 中发送该扩展。如果它没有在 ClientHello 中收到该扩展, 则 不得 (MUST NOT) 发送该扩展。

如果服务器验证票据失败, 则它回退到执行完整握手。如果票据被服务器接受但握手失败, 客户端 应当 (SHOULD) 删除该票据。

SessionTicket 扩展已被分配编号 35。SessionTicket 扩展的 extension_data 字段包含该票据。