HTTPS 互聯(lián)網(wǎng)世界的安全基礎
近一年公司在努力推進全站的 HTTPS 化,作為負責應用系統(tǒng)的我們,在配合這個趨勢的過程中,順便也就想去搞清楚 HTTP 后面的這個 S 到底是個什么含義?有什么作用?帶來了哪些影響?畢竟以前也就只是模糊的知道大概是更安全,但到底怎么變得更安全的,實際上整個細節(jié)和流程并沒有掌握的特別清晰。
所以這篇關于 HTTPS 的技術(shù)總結(jié)文章,主要提供一個關于 HTTPS 中的 S 一個整體的認識。從其產(chǎn)生的歷史背景、設計目標說起,到分析其協(xié)議設計結(jié)構(gòu)、交互流程是如何實現(xiàn)其目標。最后結(jié)合我們自己的案例分析下其中帶來的影響。
下面我們就先從其誕生之初說起吧。
歷史
S 代表 Secure,所以 HTTPS 自然就是更安全的 HTTP 的意思?;ヂ?lián)網(wǎng)誕生之初 SSL(Secure Sockets Layer 安全套接層)是由 Netscape 這家最早的瀏覽器公司設計的,主要是用于 Web 的安全傳輸?shù)膮f(xié)議,這種協(xié)議在早期 Web 上獲得了廣泛的應用。后來被 IETF 標準化形成了 TLS(Transport Layer Security 傳輸層安全)標準,其歷史如下:
- 1994: SSL1.0,因為存在嚴重的安全漏洞,未發(fā)布。
- 1995: SSL2.0,這個版本由于設計缺陷,很快被發(fā)現(xiàn)有嚴重漏洞,被廢棄。
- 1996: SSL3.0,重新設計并開始流行,SSL 前三個版本都是由 Netscape 設計實現(xiàn)。
- 1999: TLS1.0,IETF 將 SSL 標準化,即 RFC 2246。
- 2006: TLS1.1,作為 RFC 4346 發(fā)布。
- 2008: TLS1.2,作為 RFC 5246 發(fā)布 。
- 2015: TLS1.3,尚在制定中,處于草案階段。
如上,現(xiàn)在互聯(lián)網(wǎng)世界使用最廣泛的應該是 TLS1.2 標準。
目標
SSL/TLS 最初的設計目標就是為了實現(xiàn)下面三個目的:
- 保密:第三方無法竊聽。
- 完整:無法篡改。
- 認證:防止身份冒充。
互聯(lián)網(wǎng)是一個開放的環(huán)境,十分復雜。網(wǎng)上兩端通信的雙方彼此都不知道誰是誰,雙方如何信任、信息如何保密,如何不被篡改,這是十分復雜的問題。而且互聯(lián)網(wǎng)本身就像有生命一般在不斷進化,如何設計一個協(xié)議來應對未來可能的變化,因而這使得 SSL/TLS 協(xié)議的設計十分復雜。
結(jié)構(gòu)
我們知道整個互聯(lián)網(wǎng)構(gòu)建于 TCP/IP 協(xié)議棧基礎之上,在描述協(xié)議設計細節(jié)之前,我們先看看 SSL/TLS 協(xié)議處于該分層協(xié)議棧結(jié)構(gòu)中的位置,其分層結(jié)構(gòu)位置參考如下: