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