①客戶端向服務器請求HTTPS鏈接
客戶端向服務器傳送客戶端SSL協議的版本號,加密算法的種類,產生的隨機數,以及其餘服務器和客戶端之間通信所須要的各類信息。
②服務器確認並返回證書
服務器向客戶端傳送SSL 協議的版本號,加密算法的種類,隨機數以及其餘相關信息,同時服務器還將向客戶端傳送本身的證書。
③客戶端驗證服務器發來的證書
客戶端利用服務器傳過來的信息驗證服務器的合法性,服務器的合法性包括:證書是否過時,發行服務器證書的CA 是否可靠,發行者證書的公鑰可否正確解開服務器證書的「發行者的數字簽名」,服務器證書上的域名是否和服務器的實際域名相匹配。若是合法性驗證沒有經過,通信將斷開;若是驗證經過,將繼續進行。
④信息驗證經過,客戶端生成隨機密鑰A,用公鑰加密後發給服務器
從第③步驗證過的證書裏面能夠拿到服務器的公鑰,客戶端生成的隨機密鑰就使用這個公鑰來加密,加密以後,只有擁有該服務器(持有私鑰)才能解密出來,保證安全。
⑤服務器用私鑰解密出隨機密鑰A,之後通訊就用這個隨機密鑰A來對通訊進行加密
這個握手過程並無將驗證客戶端身份的邏輯加進去。由於在大多數的狀況下,HTTPS只是驗證服務器的身份而已。若是要驗證客戶端的身份,須要客戶端擁有證書,在握手時發送證書,而這個證書是須要成本的。算法