SSL 協議與 TLS 協議
在軟件發展過程中,有很多東西一開始都只是某個技術能力突出的公司研發出來的,在被大眾認可取得一定市場后有可能被官方收編,成為行業內的一種標準。SSL 最早是 Netscape 公司研發的,后來被采納成為標準后取名為 TLS。
1. 簡介
SSL 是網景(Netscape)公司設計的主要用于 Web 的安全傳輸協議,后來致力于互聯網標準開發與推動的組織(IETF)認為在 SSL3.0 的基礎上將該協議進行升級并標準化(RFC 2246),并命名為 TLS(Transport Layer Security)。
1.1 SSL 協議提供的服務
- 認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
- 加密數據以防止數據中途被竊取;
- 維護數據的完整性,確保數據在傳輸過程中不被改變。
1.2 SSL 協議結構
-
握手協議(SSL Handshake Protocol):它建立在 SSL 記錄協議之上,用于在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。內部包括SSL握手協議(SSL HandShake Protocol)、SSL密碼參數修改協議(SSL Change Cipher Spec Protocol)和SSL告警協議(SSL Alert Protocol)。
-
記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持。
2. 發展歷史
協議 | 時間 | 狀態 |
---|---|---|
SSL 1.0 | 未公布 | 未公布 |
SSL 2.0 | 1995年 | 公開發布了第二版,于2011年棄用 |
SSL 3.0 | 1996年 | 第三版得到大規模應用,于2015年棄用 |
TLS 1.0 | 1999年 | RFC2246 被IETF納入標準,與 SSL 3.0 比變化不大,命名改為 TLS |
TLS 1.1 | 2006年 | RFC4346 修改bug,新增參數 |
TLS 1.2 | 2008年 | RFC5246 功能擴展和算法改進 |
TLS 1.8 | 2018年 | RFC8846 效率和安全均有較大提升 |
3. 現狀
目前大家依然比較習慣用 SSL 稱呼,但是 SSL 系列的所有版本都已經棄用了。TLS 可以認為是 SSL 的后續版本,低版本的 TLS 有存在較為明顯的漏洞,所以并不是選擇了 Https 就是決定安全的,建議至少選擇 TLS 1.2 以上版本。
近年來各個大廠都不留余力的推動 Https ,騰訊小程序更是要求全站啟用 Https 。在選擇了 Https 的情況下我們要明白一點,Https 與 Http 相比,需要更多的 CPU 資源去計算加密算法的。我們的架構在設計的時候我是比較建議網關對外部分用 Https 算法,站點內部的服務間通信用 Http 或 Rpc 協議。
4. 小結
TLS 是傳輸層與應用層之間的加密協議,對于應用層來說他是透明的,也就是不用關心他的具體實現,不管有沒有 TLS 對應用層的軟件來說都是一樣的。多了這一層的話可能在瀏覽器側察覺不到,我們在瀏覽器 F12 查看的接口出入參都還是銘文的,其實底層傳輸的過層已經是加密處理了。