Tls
TLS 擴展欄位的格式是什麼?
在 TLS 1.2 協議中,客戶端可以發送擴展。我的問題是:這個欄位的格式是什麼?是清單嗎?
在 TLS 1.2
client hello
中,標准說:extensions 客戶端可以通過在 extensions 欄位中發送數據來請求伺服器的擴展功能。實際的“擴展”格式在第 7.4.1.4 節中定義。
在 處
server hello
,標準明確表示它是一個列表。但我不確定這是否意味著客戶端也將擴展作為列表發送:擴展 擴展列表。請注意,只有客戶端提供的擴展才能出現在伺服器的列表中。
我假設在 TLS 1.3 中也使用了相同的格式。
RFC 5246 的第 7.4.1.2 節定義了以下內容
ClientHello
:struct { ProtocolVersion client_version; Random random; SessionID session_id; CipherSuite cipher_suites<2..2^16-2>; CompressionMethod compression_methods<1..2^8-1>; select (extensions_present) { case false: struct {}; case true: Extension extensions<0..2^16-1>; }; } ClientHello;
如您所見,您最多可以添加 $ 2^{16}=65536 $ 根據第 4.3 節,以列表格式對客戶端 hello 進行擴展字節。