目錄
1. 什么是?HTTPS
通信機制流程
?證書驗證過程
CA證書
瀏覽器如何校驗證書合法性呢?
1. 什么是?HTTPS
HTTP 加上加密處理和認證以及完整性保護后即是 HTTPS。
它是為了解決 HTTP 存在的安全性問題,而衍生的協議,那使用 HTTP 的缺點有:
1.通信使用明文可能會被竊聽
2.不驗證通信方的身份可能遭遇偽裝
3.無法驗證報文完整性,可能已遭篡改
HTTPS 并非是一種新協議,只是 HTTP 通信接口部分用 SSL 和?TLS?協議代替。通常,HTTP 是直接跟?TCP?通信,當使用了 SSL 后,則變成先和 SSL 通信,再有 SSL 和 TCP 通信。簡而言之,HTTPS 是身披 SSL 協議的這層外殼的 HTTP。
SSL/TLS加密層
HTTPS在HTTP協議基礎上疊加SSL/TLS加密層,通過非對稱加密(如RSA、ECC)交換對稱密鑰,再利用對稱加密(如AES)加密實際數據。這一過程確保:
數據機密性:中間人無法竊聽或篡改傳輸內容(如密碼、支付信息)。
完整性驗證:通過哈希算法(如SHA-256)生成數字指紋,防止數據被篡改。
數字證書認證
服務器需向CA(證書頒發機構)申請數字證書,客戶端通過驗證證書的合法性(如域名匹配、有效期、吊銷狀態)確認服務器身份,杜絕釣魚攻擊。
HTTPS 安全可靠,為啥不一致使用 HTTPS 呢?
1.與純文本通信相比,加密通信會消耗更多 CPU 和內存資源。
2.購買證書也是一筆不小的開銷。
3.HTTPS 比 HTTP 要慢 2-100 倍。這是因為 SSL 慢,一種是通信慢,出去 TCP 連接、發送 HTTP 請求/響應外,還必須有 SSL 通信,整體上通信量增加了。 另一種是,大量消耗 CPU 和內存等資源,導致處理熟讀變慢,這是因為 SSL 必須進行加密
通信機制流程
安全通信機制流程詳解:
1.客戶端發送 https 請求,把自身支持的秘鑰算法套件(SSL 指定版本、加密組件列表)發送給服務器
2.服務器判斷自身是否支持該算法套件,如果支持則返回證書信息(本質為公鑰,包含了證書頒發機構,網址,過期時間等) ,否則斷開連接,
3.客戶端解析證書(通過 TLS 協議來完成),驗證證書是否有效。如果異常,則會提示是否安裝證書,常見的就是瀏覽器搜索欄左側出現“X”告警按鈕等。
4.如果證書有效、或者是授信安裝證書后,開始傳送加密信息(用證書加密后的隨機值,供加解密使用)
5.服務端通過私鑰解密加密信息,得到客戶端發送來的隨機值,然后把內容通過該值進行對稱加密。這樣一來,除非知道私鑰,否則是無法獲取加密內容的。
6.服務端返回加密后的內容
7.客戶端通過前面提到的隨機值對加密信息進行解密
?證書驗證過程
SSL 證書中包含的具體內容有證書的頒發機構、有效期、公鑰、證書持有者、簽名,通過第三方的校驗保證了身份的合法
1.檢驗基本信息:首先瀏覽器讀取證書中的證書所有者、有效期等信息進行一一校驗
2.校驗 CA 機構:瀏覽器開始查找操作系統中已內置的受信任的證書發布機構 CA,與服務器發來的證書中的頒發者 CA 比對,用于校驗證書是否為合法機構頒發;如果找不到,瀏覽器就會報錯,說明服務器發來的證書是不可信任的。
3.解密證書:如果找到,那么瀏覽器就會從操作系統中取出 頒發者 CA 的公鑰,然后對服務器發來的證書里面的簽名進行解密
4.比對 hash 值:瀏覽器使用相同的 hash 算法計算出服務器發來的證書的 hash 值,將這個計算的 hash 值與證書中簽名做對比
5.對比結果一致,則證明服務器發來的證書合法,沒有被冒充
6.此時瀏覽器就可以讀取證書中的公鑰,用于后續加密了
CA證書
CA 是證書頒發機構的簡稱,它會給自己簽發一個根證書?Root CA,并且 CA 會通過根證書來簽發中間證書,授權中間證書頒發機構簽發證書的權限,最后由中間證書頒發機構向用戶簽發用戶證書。之所以多一層中間證書是為了保護根證書,減少根證書被攻擊或者被破解的風險。
瀏覽器如何校驗證書合法性呢?
由于用戶證書被中間證書信任,而中間證書被根證書信任,根證書又被瀏覽器信任,這樣一個完整的證書鏈使得瀏覽器可以在根證書庫內一次檢索用戶證書、中間證書和根證書,如果能匹配到根證書,那么這一信任鏈上的所有證書都是合法的。