用戶瀏覽器將其SSL版本號、加密設置參數、與session有關的數據以及其它一些必要信息發送到服務器。
服務器將其SSL版本號、加密設置參數、與session有關的數據以及其它一些必要信息發送給瀏覽器,同時發給瀏覽器的還有服務器的證書。如果配置服務器的SSL需要驗證用戶身份,還要發出請求要求瀏覽器提供用戶證書。
客戶端檢查服務器證書,如果檢查失敗,提示不能建立SSL連接。如果成功,那麼繼續。客戶端瀏覽器爲本次會話生成pre-master secret,並將其用服務器公鑰加密後發送給服務器。如果服務器要求鑑別客戶身份,客戶端還要再對另外一些數據簽名後並將其與客戶端證書一起發送給服務器。
如果服務器要求鑑別客戶身份,則檢查簽署客戶證書的CA是否可信。如果不在信任列表中,結束本次會話。如果檢查通過,服務器用自己的私鑰解密收到的pre-master secret,並用它通過某些算法生成本次會話的master secret。
客戶端與服務器均使用此master secret生成本次會話的會話密鑰(對稱密鑰)。在雙方SSL握手結束後傳遞任何消息均使用此會話密鑰。這樣做的主要原因是對稱加密比非對稱加密的運算量低一個數量級以上,能夠顯著提高雙方會話時的運算速度。
客戶端通知服務器此後發送的消息都使用這個會話密鑰進行加密。並通知服務器客戶端已經完成本次SSL握手。
服務器通知客戶端此後發送的消息都使用這個會話密鑰進行加密。並通知客戶端服務器已經完成本次SSL握手。
本次握手過程結束,會話已經建立。雙方使用同一個會話密鑰分別對發送以及接受的信息進行加、解密。