HTTPS = HTTP + TLS/SSL
,簡單理解 HTTPS 其實就是在 HTTP 上面加多了一層安全層。HTTP 可以是 Http2.0 也可以是 Http1.1,不過現在 Http2.0 是強制要求使用 Https 的。
HTTPS 基本原理
首先需要一個第三方認證機構(CA認證),確保公鑰的合法性(即證書,不合法的證書瀏覽器會警告),然後利用非對稱加密(公鑰私鑰)方式加密並傳輸共享密鑰到服務器,可以確保共享密鑰無法被攔截被獲取到(共享密鑰被公鑰加密了,只有對應的私鑰才能解密,服務器有私鑰),最終的客戶端和服務端 HTTP 傳輸就是使用共享祕鑰加密進行通信。
HTTPS 流程圖
首先,我們先看下HTTPS 的整個流程。
HTTPS 是如何確保安全的?
- 使用非對稱密鑰(即公鑰私鑰))和對稱密鑰)(即共享密鑰)相結合
通過公鑰私鑰的方式,避免了共享密鑰發送途中被第三方攔截獲取密鑰的安全問題。
通過公鑰和私鑰加密建立保護層(即 SSL 保護層),後續的 Http 請求就會使用共享密鑰進行加密通信(共享的密鑰已經被 SSL 保護起來了,外面無法攔截到),即所謂的安全層。
所以建立了安全層後,即使 HTTP 報文被攔截到,也無法解密。
- CA 認證
由於公鑰這個環節是公開的,存在被替換的風險,所以就有了第三方證書認證公司(CA認證),瀏覽器通過判斷證書是否有效。
一般系統或者瀏覽器都會內置信任的根證書(這些 CA 組織都是非常可信的),瀏覽器可以根據這個根證書判斷網站的證書是否合法。
證書如果不合法,那麼久瀏覽器就會警告,都是不給訪問的證書不合法的網站,除非用戶跳過這個警告。