最近在看公司的ssl協議實現,現將其流程總結如下:
步驟解釋如下:
1. client ->clienthello -> server。
(1). clienthello 訊息體 = client.version (客戶端協議版本)+clienthello.timestamp( 客戶端時間戳) +clienthello.random (客戶端隨機數)+會話sessionid +cipherspecs (client支援的演算法集)+certificate.serialnumber( 伺服器證書序列號)。
2. server -> serverhello -> client。
(1). server建立會話session id ,快取clienthello.timestamp 與clienthello.random ,根據cipherspecs 的支援加密集合和server 自己支援的加密集合選擇本次會話的加密演算法集ciphersuite 。
(2).serverhello 訊息體 = server.version( 伺服器協議版本號) +serverhello.timestamp (伺服器時間戳)+serverhello.random( 伺服器隨機數) +sessionid (伺服器會話)+ciphersuite (本次會話指定的加密演算法)+servercertificate( 伺服器公鑰證書) 。
(3).如要驗證client身份,傳送certificaterequest 。
3. client -> clientkeyexchange -> server
(1). client快取serverrns(伺服器隨機數) 、servercertificate(伺服器證書)
+sessionid (伺服器會話)+ciphersuite (本次會話指定的加密演算法集)
,生成客戶端隨機數(clientrnc)。
(2). 用
客戶端協議版本號+ 隨機數
生成客戶端預主金鑰premaster secret [pms], 使用
伺服器證書公鑰
加密(pms +
serverrnc
} 。
(3). 如果伺服器傳送certificaterequest 按順序連線,使用客戶端的私鑰簽名,在certificateverify 中傳送這個簽名。
(4). 傳送changecipherspec 宣告切換到加密通道傳輸。
(5). 用(pms,serverrns,clientrnc)計算客戶端主金鑰master secret[ms] ,生用ms成通道驗證的finished 訊息。將finished 之前發出的和接收到訊息(不包括finished 本身)的二進位制資料,按照順序連線後,使用ms 做prf 簽名。
4. server ->
changecipherspec -> client
(1). server使用私鑰解密並取出 。使用pms 、rnc 、rns 計算ms 。
(2). 生成伺服器的預主金鑰premaster secret2 [pms2] 。使用pms2 、rnc 、rns 生成伺服器主金鑰master secret2 [ms2] ,在會話中儲存ms2 作為傳輸金鑰。
(3). 如果有clientcertificate ,驗證相關資訊。驗證客戶端的finished 資訊。如果錯誤,返回標準失敗資訊。
(4). 生成伺服器的finished ,將finished 之前發出的和接收到訊息(不包括finished 本身)的二進位制資料,按照順序連線後,使用ms 做prf 簽名。
(5). 回傳客戶端訊息 = serverkeyexchange[用ms對稱加密(pms2)] +確認加密演算法集changecipherspec +傳送自己的finished 訊息。
5. client收到server資訊後:
(1). 驗證伺服器的finished 訊息。如失敗,切斷當前連線。
(2). 根據協商好的對稱加密演算法,使用本地儲存的ms 解serverkeyexchange 。使用pms2 、rnc 、rns 生成ms2 作為session 金鑰。在快取中儲存rns2 。
SSL協議的工作流程
ssl協議的工作流程 伺服器認證階段 1 客戶端向伺服器傳送乙個開始資訊 hello 以便開始乙個新的會話連線 2 伺服器根據客戶的資訊確定是否需要生成新的主金鑰,如需要則伺服器在響應客戶的 hello 資訊時將包含生成主金鑰所需的資訊 3 客戶根據收到的伺服器響應資訊,產生乙個主金鑰,並用伺服器的...
SSL協議 HTTPS協議
ssl secure socket layer安全套接層 tls transport layer security傳輸層安全,是被標準化的ssl pki 公鑰基礎設施 pki提供電子簽名證書,伺服器購買證書 網路伺服器通過證書被認證,客戶端則不需要認證。tls的三個階段 1.協商金鑰演算法 2.通過...
SSL協議小結
這篇文章寫的很詳細哦,贊乙個 最近要用到ssl協議,順便了解了下 ssl secure sockets layer 安全套接層 及其繼任者 傳輸層安全 transport layer security,tls 是為 網路通訊 提供安全及 資料完整性 的一種安全協議。tls與ssl在 傳輸層對網路連線...