server_name
server_name(SNI)指明客户端要访问的主机,使同一个 IP 地址可以提供多张证书。
客户端在 ClientHello 中以明文发送主机名(RFC 6066 §3)。没有它,托管多个站点的服务器就无法知道该出示哪张证书,这也是直接用 IP 地址连接时往往会拿到默认证书的原因。加密 ClientHello(RFC 9849)把真实名称隐藏在加密的内层 ClientHello 中。
显示 80 项中的 80 项
TLS ExtensionType 值,以及每个扩展可以出现在哪些 TLS 1.3 握手消息中。
| 值 | 名称 | 说明 | 推荐 | 参考文献 |
|---|---|---|---|---|
0说明 | server_name | server_name(扩展 0)在 TLS 1.3 中可以出现在 ClientHello、EncryptedExtensions和CertificateRequest 中。 | Y | RFC 6066RFC 9261 |
1 | max_fragment_length | max_fragment_length(扩展 1)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | N | RFC 6066RFC 8449 |
2 | client_certificate_url | client_certificate_url(扩展 2)不在 TLS 1.3 中使用。 | Y | RFC 6066 |
3 | trusted_ca_keys | trusted_ca_keys(扩展 3)不在 TLS 1.3 中使用。 | Y | RFC 6066 |
4 | truncated_hmac | truncated_hmac(扩展 4)不在 TLS 1.3 中使用。 | D | RFC 6066IESG Action 2018-08-16RFC 9847Tag Size Does Matter: Attacks and Proofs for the TLS Record Protocol |
5 | status_request | status_request(扩展 5)在 TLS 1.3 中可以出现在 ClientHello、CertificateRequest和Certificate 中。 | Y | RFC 6066RFC 9846 |
6 | user_mapping | user_mapping(扩展 6)不在 TLS 1.3 中使用。 | Y | RFC 4681 |
7 | client_authz | client_authz(扩展 7)不在 TLS 1.3 中使用。 | N | RFC 5878 |
8 | server_authz | server_authz(扩展 8)不在 TLS 1.3 中使用。 | N | RFC 5878 |
9 | cert_type | cert_type(扩展 9)不在 TLS 1.3 中使用。 | N | RFC 6091 |
10说明 | supported_groups | supported_groups(扩展 10)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。它以前叫作 elliptic_curves。 | Y | RFC 8422RFC 7919RFC 9846 |
11 | ec_point_formats | ec_point_formats(扩展 11)不在 TLS 1.3 中使用。 | Y | RFC 8422 |
12 | srp | srp(扩展 12)不在 TLS 1.3 中使用。 | N | RFC 5054 |
13说明 | signature_algorithms | signature_algorithms(扩展 13)在 TLS 1.3 中可以出现在 ClientHello和CertificateRequest 中。 | Y | RFC 9846 |
14 | use_srtp | use_srtp(扩展 14)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 5764 |
15 | heartbeat | heartbeat(扩展 15)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 6520 |
16说明 | application_layer_protocol_negotiation | application_layer_protocol_negotiation(扩展 16)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 7301 |
17 | status_request_v2 | status_request_v2(扩展 17)不在 TLS 1.3 中使用。 | Y | RFC 6961 |
18 | signed_certificate_timestamp | signed_certificate_timestamp(扩展 18)在 TLS 1.3 中可以出现在 ClientHello、CertificateRequest和Certificate 中。 | N | RFC 6962 |
19 | client_certificate_type | client_certificate_type(扩展 19)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 7250 |
20 | server_certificate_type | server_certificate_type(扩展 20)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 7250 |
21 | padding | padding(扩展 21)在 TLS 1.3 中只能出现在 ClientHello 中。 | Y | RFC 7685 |
22 | encrypt_then_mac | encrypt_then_mac(扩展 22)不在 TLS 1.3 中使用。 | Y | RFC 7366 |
23说明 | extended_main_secret | extended_main_secret(扩展 23)不在 TLS 1.3 中使用。 | Y | RFC 7627RFC 9846 |
24 | token_binding | token_binding(扩展 24)不在 TLS 1.3 中使用。 | Y | RFC 8472 |
25 | cached_info | cached_info(扩展 25)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 7924RFC 9846 |
26 | tls_lts | tls_lts(扩展 26)不在 TLS 1.3 中使用。 | N | draft-gutmann-tls-lts-11 |
27 | compress_certificate | compress_certificate(扩展 27)在 TLS 1.3 中可以出现在 ClientHello和CertificateRequest 中。 | Y | RFC 8879 |
28 | record_size_limit | record_size_limit(扩展 28)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 8449 |
29 | pwd_protect | pwd_protect(扩展 29)在 TLS 1.3 中只能出现在 ClientHello 中。 | N | RFC 8492 |
30 | pwd_clear | pwd_clear(扩展 30)在 TLS 1.3 中只能出现在 ClientHello 中。 | N | RFC 8492 |
31 | password_salt | password_salt(扩展 31)在 TLS 1.3 中可以出现在 ClientHello、ServerHello和HelloRetryRequest 中。 | N | RFC 8492 |
32 | ticket_pinning | ticket_pinning(扩展 32)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | N | RFC 8672 |
33 | tls_cert_with_extern_psk | tls_cert_with_extern_psk(扩展 33)在 TLS 1.3 中可以出现在 ClientHello和ServerHello 中。 | N | RFC 9973 |
34 | delegated_credential | delegated_credential(扩展 34)在 TLS 1.3 中可以出现在 ClientHello、CertificateRequest和Certificate 中。 | Y | RFC 9345 |
35 | session_ticket | session_ticket(扩展 35)不在 TLS 1.3 中使用。它以前叫作 SessionTicket TLS。 | Y | RFC 5077RFC 8447 |
36 | TLMSP | TLMSP(扩展 36)不在 TLS 1.3 中使用。 | N | ETSI TS 103 523-2 |
37 | TLMSP_proxying | TLMSP_proxying(扩展 37)不在 TLS 1.3 中使用。 | N | ETSI TS 103 523-2 |
38 | TLMSP_delegate | TLMSP_delegate(扩展 38)不在 TLS 1.3 中使用。 | N | ETSI TS 103 523-2 |
39 | supported_ekt_ciphers | supported_ekt_ciphers(扩展 39)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 8870 |
41 | pre_shared_key | pre_shared_key(扩展 41)在 TLS 1.3 中可以出现在 ClientHello和ServerHello 中。 | Y | RFC 9846 |
42 | early_data | early_data(扩展 42)在 TLS 1.3 中可以出现在 ClientHello、EncryptedExtensions和NewSessionTicket 中。 | Y | RFC 9846 |
43 | supported_versions | supported_versions(扩展 43)在 TLS 1.3 中可以出现在 ClientHello、ServerHello和HelloRetryRequest 中。 | Y | RFC 9846 |
44 | cookie | cookie(扩展 44)在 TLS 1.3 中可以出现在 ClientHello和HelloRetryRequest 中。 | Y | RFC 9846 |
45 | psk_key_exchange_modes | psk_key_exchange_modes(扩展 45)在 TLS 1.3 中只能出现在 ClientHello 中。 | Y | RFC 9846 |
47 | certificate_authorities | certificate_authorities(扩展 47)在 TLS 1.3 中可以出现在 ClientHello和CertificateRequest 中。 | Y | RFC 9846 |
48 | oid_filters | oid_filters(扩展 48)在 TLS 1.3 中只能出现在 CertificateRequest 中。 | Y | RFC 9846 |
49 | post_handshake_auth | post_handshake_auth(扩展 49)在 TLS 1.3 中只能出现在 ClientHello 中。 | Y | RFC 9846 |
50 | signature_algorithms_cert | signature_algorithms_cert(扩展 50)在 TLS 1.3 中可以出现在 ClientHello和CertificateRequest 中。 | Y | RFC 9846 |
51说明 | key_share | key_share(扩展 51)在 TLS 1.3 中可以出现在 ClientHello、ServerHello和HelloRetryRequest 中。 | Y | RFC 9846RFC Errata 5483 |
52 | transparency_info | transparency_info(扩展 52)在 TLS 1.3 中可以出现在 ClientHello、CertificateRequest和Certificate 中。 | Y | RFC 9162 |
53 | connection_id | connection_id(扩展 53)不在 TLS 1.3 中使用。它仅适用于 DTLS。此码点已弃用。 | D | RFC 9146RFC 9847 |
54 | connection_id | connection_id(扩展 54)在 TLS 1.3 中可以出现在 ClientHello和ServerHello 中。它仅适用于 DTLS。 | N | RFC 9146 |
55 | external_id_hash | external_id_hash(扩展 55)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 8844 |
56 | external_session_id | external_session_id(扩展 56)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 8844 |
57 | quic_transport_parameters | quic_transport_parameters(扩展 57)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 9001 |
58 | ticket_request | ticket_request(扩展 58)在 TLS 1.3 中可以出现在 ClientHello和EncryptedExtensions 中。 | Y | RFC 9149 |
59 | dnssec_chain | dnssec_chain(扩展 59)在 TLS 1.3 中可以出现在 ClientHello和Certificate 中。 | N | RFC 9102RFC Errata 6860 |
60 | sequence_number_encryption_algorithms | sequence_number_encryption_algorithms(扩展 60)在 TLS 1.3 中可以出现在 ClientHello、HelloRetryRequest和ServerHello 中。它仅适用于 DTLS。 | N | draft-pismenny-tls-dtls-plaintext-sequence-number-01 |
61 | rrc | rrc(扩展 61)在 TLS 1.3 中可以出现在 ClientHello和ServerHello 中。它仅适用于 DTLS。 | N | RFC 9853 |
62 | tls_flags | tls_flags(扩展 62)在 TLS 1.3 中可以出现在 ClientHello、ServerHello、HelloRetryRequest、EncryptedExtensions、CertificateRequest、Certificate和NewSessionTicket 中。 | N | draft-ietf-tls-tlsflags-14 |
2570 | Reserved | 0x0A0A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
6682 | Reserved | 0x1A1A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
10794 | Reserved | 0x2A2A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
14906 | Reserved | 0x3A3A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
19018 | Reserved | 0x4A4A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
23130 | Reserved | 0x5A5A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
27242 | Reserved | 0x6A6A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
31354 | Reserved | 0x7A7A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
35466 | Reserved | 0x8A8A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
39578 | Reserved | 0x9A9A 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
43690 | Reserved | 0xAAAA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
47802 | Reserved | 0xBABA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
51914 | Reserved | 0xCACA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
56026 | Reserved | 0xDADA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
60138 | Reserved | 0xEAEA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
64250 | Reserved | 0xFAFA 是“TLS ExtensionType”注册表中的 GREASE 值(RFC 8701):客户端会随机发送这类值,让服务器学会忽略未知条目。它从不代表任何真实的算法。 | N | RFC 8701 |
64768 | ech_outer_extensions | ech_outer_extensions(扩展 64768)在 TLS 1.3 中只能出现在 ClientHello 中。 | Y | RFC 9849 |
65037说明 | encrypted_client_hello | encrypted_client_hello(扩展 65037)在 TLS 1.3 中可以出现在 ClientHello、HelloRetryRequest和EncryptedExtensions 中。 | Y | RFC 9849 |
65281 | renegotiation_info | renegotiation_info(扩展 65281)不在 TLS 1.3 中使用。 | Y | RFC 5746 |
| 范围 | 状态 | 说明 |
|---|---|---|
| 0x0028 | reserved | Reserved |
| 0x002E | reserved | Reserved |
| 0x003F–0x0A09 | unassigned | Unassigned |
| 0x0A0B–0x1A19 | unassigned | Unassigned |
| 0x1A1B–0x2A29 | unassigned | Unassigned |
| 0x2A2B–0x3A39 | unassigned | Unassigned |
| 0x3A3B–0x4A49 | unassigned | Unassigned |
| 0x4A4B–0x5A59 | unassigned | Unassigned |
| 0x5A5B–0x6A69 | unassigned | Unassigned |
| 0x6A6B–0x7A79 | unassigned | Unassigned |
| 0x7A7B–0x8A89 | unassigned | Unassigned |
| 0x8A8B–0x9A99 | unassigned | Unassigned |
| 0x9A9B–0xAAA9 | unassigned | Unassigned |
| 0xAAAB–0xBAB9 | unassigned | Unassigned |
| 0xBABB–0xCAC9 | unassigned | Unassigned |
| 0xCACB–0xDAD9 | unassigned | Unassigned |
| 0xDADB–0xEAE9 | unassigned | Unassigned |
| 0xEAEB–0xFAF9 | unassigned | Unassigned |
| 0xFAFB–0xFCFF | unassigned | Unassigned |
| 0xFD01–0xFE0C | unassigned | Unassigned |
| 0xFE0E–0xFEFF | unassigned | Unassigned |
| 0xFF00 | private | Reserved for Private Use |
| 0xFF02–0xFFFF | private | Reserved for Private Use |
来源:Transport Layer Security (TLS) Parameters(IANA),获取于 2026-10-20。数据许可证:CC0-1.0。 TLS ExtensionType Values
server_name(SNI)指明客户端要访问的主机,使同一个 IP 地址可以提供多张证书。
客户端在 ClientHello 中以明文发送主机名(RFC 6066 §3)。没有它,托管多个站点的服务器就无法知道该出示哪张证书,这也是直接用 IP 地址连接时往往会拿到默认证书的原因。加密 ClientHello(RFC 9849)把真实名称隐藏在加密的内层 ClientHello 中。
supported_groups 列出客户端接受的密钥交换组——椭圆曲线、有限域组和后量子混合组。
10 号扩展原名 elliptic_curves,RFC 7919 将其推广到有限域组。在 TLS 1.3 中,它与 key_share 配合使用:客户端在这里列出自己接受的组,并为其中一部分发送密钥共享;如果服务器更想使用某个已列出但没有附带密钥共享的组,就会回复 HelloRetryRequest。
signature_algorithms 列出对端可以用来对握手签名的签名方案。
在 TLS 1.3 中,它列出 CertificateVerify 可接受的方案;如果没有 signature_algorithms_cert,它同时也规定证书可接受的方案。如果服务器没有与客户端列表相符的证书,握手就会失败。
ALPN 在 TLS 握手期间协商应用层协议(h2、http/1.1)。
16 号扩展(RFC 7301)让客户端提供 h2、http/1.1 等协议,由服务器从中选择一个,从而省去一次往返。基于 TLS 的 HTTP/2 只能通过 ALPN 协商。
extended_main_secret 把 TLS 1.2 的主密钥绑定到握手记录上,修复了三重握手攻击。
23 号扩展由 RFC 7627 以 extended_master_secret 之名引入,起因是2014年的三重握手攻击:攻击者可以让两个会话共用同一个主密钥。RFC 9846 将其更名为 extended_main_secret。TLS 1.3 在设计上就把各个密钥绑定到握手记录。
在 TLS 1.3 中,key_share 携带客户端和服务器的 Diffie–Hellman 或 KEM 密钥共享。
在第一轮消息中就发送密钥共享,使 TLS 1.3 只需一次往返即可完成握手。客户端通常发送一到两个密钥共享(例如 X25519MLKEM768 和 X25519);如果没有一个与服务器接受的组匹配,就需要通过 HelloRetryRequest 多花一次往返。
encrypted_client_hello(ECH)用发布在 DNS 中的密钥加密 ClientHello,其中包括服务器名称。
ECH(RFC 9849)把真实的 ClientHello 包裹在一个外层 ClientHello 中,外层只写明共享前端的名称。内层 ClientHello 用 HPKE 加密,所用密钥由服务器发布在 ECHConfig 中,ECHConfig 通常通过 HTTPS 类型的 DNS 记录分发,因此网络上的观察者只能看到公开名称。