Server Certificate
典型的Certificate消息用於攜帶服務器X.509證書鏈。證書鏈是以ASN.1 DER編碼的一系列證書,一個接着一個組合而成。主證書必須第一個發送,中間證書按照正確的順序跟在主證書之后。根證書可以並且應該省略掉,因為在這個場景中它沒有用處。
服務器必須保證它發送的證書與選擇的算法套件一致。比方說,公鑰算法與套件中使用的必須匹配。除此以外,一些密鑰交換算法依賴嵌入證書的特定數據,而且要求證書必須以客戶端支持的算法簽名。所有這些都表明服務器需要配置多個證書(每個證書可能會配備不同的證書鏈)。
Certificate消息是可選的,因為並非所有套件都使用身份驗證,也並非所有身份驗證方法都需要證書。更進一步說,雖然消息默認使用X.509證書,但是也可以攜帶其他形式的標志;一些套件就依賴PGP密鑰。
證書中所攜帶服務器的公鑰,用於加密后面消息中預主密鑰。消息內容如下:
從圖中可以看到,服務器實際上發送的是一條證書鏈,包含從服務器證書到其根證書
從圖中可以看到證書的各字段信息,包括證書版本號(v3)、證書序列號(0x2cee193c188278ea3e437573)、證書簽名算法、頒發者信息 和 證書有效期(2019年5月9日 9:22:02 至 2020年6月25日 13:31:02)
接下來還包括證書持有者(baidu.com...)、證書公鑰信息(3082010a0282010100b4c6bfda53200fea40f3b85217663b..)、擴展字段、證書的簽名算法(SHA-256 RSA加密)、證書的簽名值(aab9cd528edc365d47d48bf3321706468360a327054929b1...)
證書持有者:
證書公鑰:
擴展字段:
[參考文獻]
- 《HTTPS 權威指南:在服務器和Web應用上部署SSL/TLS和PKI》
- SSL握手過程實例分析 https://blog.csdn.net/a1510841693/article/details/84640029