HTTPS 協議是由 HTTP 加上 TLS/SSL 協議構建的可進行加密傳輸、身份認證的網絡協議。TLS 的前身是 SSL,TLS1.0 就是 SSL3.1,TLS1.1 是 SSL3.2,TLS1.2 則是 SSL3.3。HTTPS 標準端口是 443。TLS/SSL 中使用了非對稱加密,對稱加密以及 Hash 算法。算法
向 CA 機構提交申請,提交信息包括:瀏覽器
CA 機構收到證書申請,發送證書和私鑰給申請者,證書包含這些信息:安全
簽名就是在信息的後面再加上一段內容
CA 機構發送給申請者的私鑰和證書中公鑰是一對。這裏的公鑰用於加密,私鑰用於解密。
客戶端發送 Client Hello 給服務端,包含如下信息:網絡
服務端收到請求後,發送 server Hello,包含如下信息:dom
證書加密
客戶端收到請求後,將會作一下事情:操作系統
驗證證書server
生成隨機數域名
服務端ast
客戶端/服務端
第一步要確認服務端的身份是否可信,才能進行下面的數據傳輸。證書的做用就是確認服務端身份,確認證書來自權威可信機構,且證書內容未做修改,證書內容可信,證書內容有效,從而確認服務端的身份。
以上只是單向認證,雙向認證時客戶端也要發送包含公鑰的證書給服務端,服務端驗證證書成功後,使用客戶端的公鑰加密通訊方案,再給客戶端,而後客戶端生成隨機數 Pre-master,根據隨機數生成的密鑰加密傳輸數據。
服務端證書可信後,再使用申請證書時生成的公鑰對隨機數加密,服務端收到後用申請證書時生成的私鑰解密。保證了隨機數的安全性,不會被第三方解密獲取。
傳輸數據的密鑰根據隨機數 Pre-master 生成的,因此隨機數保密十分重要。