1. Introduction (简介)
TLS 1.2 由 RFC 5246 定义. RFC 5246 包含 TLS extension framework, extension 设计考虑以及新 extension code point 的 IANA 分配规则, 但除 Signature Algorithms 外没有定义具体 extension.
本文档给出现有 TLS extension 的规范. 它主要改编并整理自 RFC 4366, 后者面向 TLS 1.0 和 TLS 1.1.
1.1 Specific Extensions Covered (覆盖的具体扩展)
本文档定义的 extension type 为:
enum {
server_name(0), max_fragment_length(1),
client_certificate_url(2), trusted_ca_keys(3),
truncated_hmac(4), status_request(5), (65535)
} ExtensionType;
这些 extension 分别允许 client 向 server 提供目标 server name, 协商较小的 maximum fragment length, 使用 client certificate URL, 指示 client 拥有的 trusted CA root key, 协商 truncated HMAC, 以及在 handshake 中请求 server certificate status information, 例如 OCSP response.
这些 extension 向后兼容. 支持 extension 的 client 可以与不支持 extension 的 server 通信, 反之亦然. 在 TLS handshake 中发送的所有 extension 相关消息 MUST 纳入 Finished message 的 hash calculation.
这些 extension 只在 session initiation 时相关. 如果 client 请求 session resumption, 它通常 SHOULD 发送与非恢复场景相同的 extension. 如果旧 session 被恢复, server MUST 忽略这些 extension, 且 server hello 中不发送本文档定义的 extension type.
1.2 Conventions Used in This Document (约定)
本文中的 MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY 和 OPTIONAL 按 RFC 2119 解释.