RFC5246解讀:ClientHello——國密SSL專題
TLS1.2
TLS1.2協議
ClientHello
當發送消息時:
當客戶端第一次連接服務端,需要發送ClientHello。客戶端也可以發送ClientHello作爲對HelloRequest的響應,或主動發送以便重新協商現有連接中的安全參數。
ClientHello的結構:
ClientHello包括一個隨機數結構,
struct {
uint32 gmt_unix_time;
opaque random_bytes[28];
} Random;
gmt_unix_time
現在的日期和時間是標準UNIX 32位格式(從1970年1月1日00:00開始,UTC,忽略閏秒)根據發送者的內部時鐘。時鐘不需要被設置得準確通過基礎TLS協議;更高層或者應用層協議可能會定義額外的需求。注意,由於歷史原因,數據元素被命名使用GMT,當前世界時基UTC的前身。
random_bytes
28字節由安全隨機數生成器生成。
ClientHello包括可變長度會話標識符。如果非空,該值定義了在相同客戶端和服務端之間的一個會話,客戶端希望重用這個安全參數。會話標識符可能會來自一個更早的連接,或者來自另一個現在活躍的連接。第二個選擇是有用的如果客戶端僅僅希望升級隨機數結構和導出連接的值。第三個選項成功建立幾個獨立安全的連接沒有複製全部的握手協議。