HTTPS簡介
圖片來源自網絡
SSL(Security Sockets Layer,安全套接層)
- 爲網絡通信提供安全及數據完整性的一種安全協議
- 是操作系統對外的API,SSL3.0後更名爲TLS
- 採用身份驗證和數據加密保證網絡通信的安全和數據的完整性
加密方式
- 對稱加密:加密和解密都使用同一個祕鑰(效率高)。
- 非對稱加密:加密使用的祕鑰和解密使用的祕鑰是不相同的。(性能較低,安全性十分強)
- 哈希算法:將任意長度的信息轉換爲固定長度的值,算法不可逆
- 數字簽名:證明某個消息或者文件是某人發出/認同的
HTTPS數據傳輸流程
瀏覽器會在發送HTTP信息前跟服務器進行握手操作,下面是整體流程:
- 瀏覽器將支持的加密算法信息發送給服務器
- 服務器選擇一套瀏覽器支持的加密算法,以證書的形式回發瀏覽器
- 證書的信息有:發佈的CA機構、證書的有效期、公鑰、所有者、簽名等
- CA機構是具有證書頒發的權威機構
- 瀏覽器驗證證書合法性,並結合證書公鑰加密信息發送給服務器
- 服務器使用私鑰解密握手信息,驗證哈希,加密新的握手響應消息回發瀏覽器
- 瀏覽器解密握手響應小溪,並對消息進行驗真,之後進行加密交互數據
HTTP和HTTPS的區別
- HTTPS需要到CA申請證書,HTTP不需要
- HTTPS密文傳輸,HTTP明文傳輸
- 連接方式不同,HTTPS默認使用443端口
- HTTPS = HTTP + 加密 +認證 +完整性保護,較HTTP安全
HTTPS真的安全嗎?
- 瀏覽器默認填充http://,請求需要進行跳轉,有被劫持的風險
- 可以使用HSTS(HTTP Strict Transport Security)優化
在接下來的31536000秒(即一年)中,瀏覽器向example.com或其子域名發送HTTP請求時,必須採用HTTPS來發起連接。比如,用戶點擊超鏈接或在地址欄輸入 http://www.example.com/ ,瀏覽器應當自動將 http 轉寫成 https,然後直接向 https://www.example.com/ 發送請求。
在接下來的一年中,如果 example.com 服務器發送的TLS證書無效,用戶不能忽略瀏覽器警告繼續訪問網站。