1. 什么是 HTTPS
HTTP 加上加密處理和認證以及完整性保護后即是 HTTPS。
它是為了解決 HTTP 存在的安全性問題,而衍生的協議,那使用 HTTP 的缺點有:
1.通信使用明文可能會被竊聽
2.不驗證通信方的身份可能遭遇偽裝
3.無法驗證報文完整性,可能已遭篡改
HTTPS 并非是一種新協議,只是 HTTP 通信接口部分用 SSL 和 TLS 協議代替。通常,HTTP 是直接跟 TCP 通信,當使用了 SSL 后,則變成先和 SSL 通信,再有 SSL 和 TCP 通信。簡而言之,HTTPS 是身披 SSL 協議的這層外殼的 HTTP。
補充下,SSL 協議是獨立于 HTTP 的協議,所以運行在應用層的其他協議,如 Telnet、SMTP 均可以配合 SSL 協議使用,所以也說 SSL 協議是應用最廣泛的網絡安全技術。
HTTPS 安全可靠,為啥不一致使用 HTTPS 呢?
1.與純文本通信相比,加密通信會消耗更多 CPU 和內存資源。
2.購買證書也是一筆不小的開銷。
3.HTTPS 比 HTTP 要慢 2-100 倍。這是因為 SSL 慢,一種是通信慢,出去 TCP 連接、發送 HTTP 請求/響應外,還必須有 SSL 通信,整體上通信量增加了。 另一種是,大量消耗 CPU 和內存等資源,導致處理熟讀變慢,這是因為 SSL 必須進行加密,通常使用 SSL 加速器來改善問題,但實際上沒有根本性的解決方法。
下面一起看下 HTTPS 請求的全過程詳解。
2. 安全通信機制
1.流程圖
2.?
3.?
安全通信機制流程詳解:
1.客戶端發送 https 請求,把自身支持的秘鑰算法套件(SSL 指定版本、加密組件列表)發送給服務器
2.服務器判斷自身是否支持該算法套件,如果支持則返回證書信息(本質為公鑰,包含了證書頒發機構,網址,過期時間等) ,否則斷開連接,
3.客戶端解析證書(通過 TLS 協議來完成),驗證證書是否有效。如果異常,則會提示是否安裝證書,常見的就是瀏覽器搜索欄左側出現“X”告警按鈕等。
4.如果證書有效、或者是授信安裝證書后,開始傳送加密信息(用證書加密后的隨機值,供加解密使用)
5.服務端通過私鑰解密加密信息,得到客戶端發送來的隨機值,然后把內容通過該值進行對稱加密。這樣一來,除非知道私鑰,否則是無法獲取加密內容的。
6.服務端返回加密后的內容
7.客戶端通過前面提到的隨機值對加密信息進行解密
3. 證書驗證過程
SSL 證書中包含的具體內容有證書的頒發機構、有效期、公鑰、證書持有者、簽名,通過第三方的校驗保證了身份的合法
1.檢驗基本信息:首先瀏覽器讀取證書中的證書所有者、有效期等信息進行一一校驗
2.校驗 CA 機構:瀏覽器開始查找操作系統中已內置的受信任的證書發布機構 CA,與服務器發來的證書中的頒發者 CA 比對,用于校驗證書是否為合法機構頒發;如果找不到,瀏覽器就會報錯,說明服務器發來的證書是不可信任的。
3.解密證書:如果找到,那么瀏覽器就會從操作系統中取出 頒發者 CA 的公鑰,然后對服務器發來的證書里面的簽名進行解密
4.比對 hash 值:瀏覽器使用相同的 hash 算法計算出服務器發來的證書的 hash 值,將這個計算的 hash 值與證書中簽名做對比
5.對比結果一致,則證明服務器發來的證書合法,沒有被冒充
6.此時瀏覽器就可以讀取證書中的公鑰,用于后續加密了
4. 擴展:CA 證書
CA 是證書頒發機構的簡稱,它會給自己簽發一個根證書 Root CA,并且 CA 會通過根證書來簽發中間證書,授權中間證書頒發機構簽發證書的權限,最后由中間證書頒發機構向用戶簽發用戶證書。之所以多一層中間證書是為了保護根證書,減少根證書被攻擊或者被破解的風險。當然中間證書可能不止一個。因此通常用戶收到的證書是 3 個:根證書、中間證書、用戶證書。事實上,申請到的證書只是用戶證書,其他 2 個很早就被簽發了。
瀏覽器為何新任 CA 證書呢?
因為 CA 是被 WebTrust 信任的第三方組織,且只有通過 WebTrust 國際安全審計認證的證書頒發機構 CA,其簽發的證書才會被各大瀏覽器信任。根證書庫包含瀏覽器信任的證書頒發機構 CA 的根證書,有的瀏覽器會自建根證書庫,比如 Mozilla Firefox,有的瀏覽器會使用其他瀏覽器的根證書庫。
瀏覽器如何校驗證書合法性呢?
由于用戶證書被中間證書信任,而中間證書被根證書信任,根證書又被瀏覽器信任,這樣一個完整的證書鏈使得瀏覽器可以在根證書庫內一次檢索用戶證書、中間證書和根證書,如果能匹配到根證書,那么這一信任鏈上的所有證書都是合法的。
5. 擴展:openssl 生成證書
以生成 CA 根證書為例:
#1.準備ca配置文件,得到ca.conf vimca.conf #2.生成ca秘鑰,得到ca.key opensslgenrsa-outca.key4096 #3.生成ca證書簽發請求,得到ca.csr opensslreq -new -sha256 -outca.csr -keyca.key -configca.conf #4.生成ca根證書,得到ca.crt opensslx509 -req -days3650 -inca.csr -signkeyca.key -outca.crt
6.總結
至此一篇文章讀懂了 Https 協議全過程,最后匯總下 https 的知識點。
1.HTTP 加上加密處理和認證以及完整性保護后是 HTTPS。
2.HTTPS 是身披 SSL 外殼的 HTTP
3.相互校驗秘鑰的公開秘鑰加密技術
4.證明公開秘鑰正確性的證書
京東云發免費SSL證書啦!!!
TrustAsiaDV單域名90天0元!快速頒發,經濟實惠,保護網站數據安全,適合個人/企業網站及建站開發測試使用。
審核編輯 黃宇
-
數據加密
+關注
關注
0文章
52瀏覽量
12716 -
https
+關注
關注
0文章
51瀏覽量
6138
發布評論請先 登錄
相關推薦
評論