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