https協議為http協議和tcp協議增加了壹層安全性。所有請求和響應的數據將在結果網絡傳輸之前被加密,然後被傳輸。
Https協議支持單向認證和雙向認證。
單向認證:只驗證服務器證書的有效性。
雙向認證:檢查服務器和客戶端。
SSL的全稱是安全套接字層,是壹個安全套接字層。Ssl協議獨立於應用層,http、FTP、ssh等高層應用都可以在SSL上恢復。
TLS是傳輸層安全,是傳輸層安全協議,也是基於SSL的通用協議,同樣位於應用層和傳輸層之間,正逐漸取代SSL成為下壹代網絡安全協議。
SSL/TLS分為兩層:
1.記錄協議,記錄協議;
記錄協議基於可靠傳輸協議(TCP ),提供數據封裝、加密和解密、數據壓縮、數據驗證等基本功能。
2、握手協議,握手協議
基於握手協議,在實際數據傳輸之前,協商加密算法,交換通信密鑰,認證雙方身份。
(1)客戶端發送客戶端hello消息,包含客戶端支持的協議、sessionid、加密算法、壓縮算法的版本信息,還包含客戶端生成的隨機數。
(2)服務器響應服務器hello消息,該消息包含服務器生成的隨機數、協議版本信息、sessionid、壓縮算法信息和服務器數字證書。如果服務器配置是雙向身份驗證,服務器將請求客戶端證書。
(3)客戶端通過證書驗證服務器證書的有效性。
(4)如果證書被驗證,客戶端將把由服務器的公鑰加密的預主秘密發送給服務器。如果服務器在上壹步中請求客戶端證書,客戶端會將客戶端證書發送到服務器進行驗證。
(5)服務器驗證客戶端證書的有效性,用自己的私鑰解密PMS,使用在客戶端hello和服務器hello兩個步驟中生成的隨機數,將解密的PMS相加生成主密鑰,即主秘密,然後通過MS生成加密密鑰..
(6)客戶端也會使用客戶端hello和服務器hello兩個步驟中生成的隨機數,加上解密後的pm生成MS,然後通過MS生成加密密鑰..
(7)通知服務器將來的信息將用加密密鑰加密。
(8)向服務器發送加密密鑰以加密信息並終止握手。
(9)告知客戶未來信息將使用加密密鑰加密。
(10)向客戶端發送加密密鑰以加密信息並終止握手。
握手之後,客戶端和服務器可以開始加密數據通信: