SSL握手過程詳解

(1) 客戶端->服務器端 發送ClientHello:

       客戶端向服務器發送ClientHello信息,如:協議的版本號,版本信息,隨機 數C1ientHello1.Random,加密方式(對稱加密算法有DES和RC5,密鑰交換算   法有RSA和DH,摘要算法有MD5和SHA),客戶端公鑰等發送給服務器;



(2) 服務器端->客戶端 發送ServerHello:

        服務器向客戶端回答ServerHello, 以及確定加密的組合方式等信息。

(3) 服務器端->客戶端 發送Certificate:

       服務器產生一個隨機數ServerHello.Random,和服務器的公鑰(同常和其數字      證書Certificate放在同一個文件),這些都經由之前獲取到的客戶端的公鑰進    行加密後發送給客戶端,

(4) 服務器端->客戶端 發送ServerHelloDone:

        驗證成功後,服務器向客戶端發送ServerHelloDone消息,達成了握手協議,即雙方握手接通。

        服務器向客戶端要求證書(這是可選擇的,即:可以不向客戶端索要)。     




 (5) 客戶端->服務器端 發送ClientKeyExchange,ChangeCipherSpec,Finished:

        客戶端用客戶端的私鑰解密收到的信息,從解密後的信息中獲取服務器公鑰和證書信息。

        if(用手頭的CA公鑰解密服務器的證書後,驗證通過)

                      if(服務器端未索要證書)

                                   單向認證,客戶端向服務器端發送Finished信息;

                      else if(服務器端索要了證書)

                                   雙向認證,客戶端向服務器端發送證書,並且服務器端必須對                         此證書驗證。

                                          if(服務器端驗證通過)

                                                 客戶端向服務器端發送Finished信息;

                                          elseif(驗證未通過)

                                                 斷開連接,握手失敗,exit 1

              產生新的隨機數,然後用獲取到的服務器公鑰加密隨機數                       C1ientHello2.Random、ClientKeyExchange和ChangeCipherSpec信息,

              然後發送給服務器。

        else if(驗證失敗)

               斷開連接, 握手失敗, exit 1。



(6) 服務器端->客戶端 發送ChangecipherSpec和Finished:

        服務器端用服務器的私鑰解密獲取到的隨機數C1ientHello2.Random和ClientKeyExchange和ChangeCipherSpec信息

        服務器發送握手完成的信息Finished,SSL安全通道開啓;



(7) 服務器端<->客戶端 對稱加密傳輸:

        客戶端和服務器端開始使用相同的對稱密鑰進行數據通訊,同時進行通訊完整性的檢驗。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章