由於open***客戶端和服務器端需要互相取得信任,這中間存在一個認真握手的過程,這裡我從我學習的文檔中簡單的說一下。(不一定正確,如果有錯誤,請大家指出)
Open×××使用的是標準的RSA/DHE的客戶端握手方式:
第一步:客戶端發送一個hello的問候給服務器開始握手。在問候的信息裡有一個被RSA或者DHE加密的密碼列表
第二步:服務器選擇一個從密文列表中選擇一個密碼,然後把服務器自己的證書(由CA的私鑰簽名過的)一同發回給客戶端。這一步是很重要的。客戶端收到服務器發來的證書後使用CA的公鑰來來確認此簽名是由CA的密鑰簽發的。這步完成後,我們就確定已經認證了一個端點。
第三步:這一步,客戶端發送自己的簽名認證,服務器端收到後同樣用CA的公鑰解密認證。客戶端還會形成並發送一個稱之為"Client Key Exchange"的,這是握手期間的核心步驟,如果這步出錯,那麼安全性就毫無可言。這個secret是key裡面最後一個參數,是由服務器的公鑰加密的。一旦服務器得到這個secret,那麼兩邊都能有足夠的信息來計算一個相同的對稱密鑰。這一步發送的信息的尾端,因為我們在第二步以後對所有後面的通訊進行了加密,這一步最後的HMAC是很重要的。客戶端發送一個整個握手過程的hash值,
最後一步,客戶端進行HMAC來確保雙方的通訊都是正確的。現在我們就有了一條在兩端通訊的使用對稱密鑰加密的通道
Open×××使用的是標準的RSA/DHE的客戶端握手方式:
第一步:客戶端發送一個hello的問候給服務器開始握手。在問候的信息裡有一個被RSA或者DHE加密的密碼列表
第二步:服務器選擇一個從密文列表中選擇一個密碼,然後把服務器自己的證書(由CA的私鑰簽名過的)一同發回給客戶端。這一步是很重要的。客戶端收到服務器發來的證書後使用CA的公鑰來來確認此簽名是由CA的密鑰簽發的。這步完成後,我們就確定已經認證了一個端點。
第三步:這一步,客戶端發送自己的簽名認證,服務器端收到後同樣用CA的公鑰解密認證。客戶端還會形成並發送一個稱之為"Client Key Exchange"的,這是握手期間的核心步驟,如果這步出錯,那麼安全性就毫無可言。這個secret是key裡面最後一個參數,是由服務器的公鑰加密的。一旦服務器得到這個secret,那麼兩邊都能有足夠的信息來計算一個相同的對稱密鑰。這一步發送的信息的尾端,因為我們在第二步以後對所有後面的通訊進行了加密,這一步最後的HMAC是很重要的。客戶端發送一個整個握手過程的hash值,
最後一步,客戶端進行HMAC來確保雙方的通訊都是正確的。現在我們就有了一條在兩端通訊的使用對稱密鑰加密的通道
转载于:https://blog.51cto.com/deadsun/506328