雖然我們常常說(shuō)http請(qǐng)求,、http協(xié)議,,但是實(shí)際使用中,,絕大說(shuō)的網(wǎng)站現(xiàn)在都采用的是https協(xié)議,,這也是未來(lái)互聯(lián)網(wǎng)發(fā)展的趨勢(shì)。
首先,,學(xué)習(xí)https之前我們先回顧一下http的相關(guān)知識(shí),,南京軟件開(kāi)發(fā)之Http協(xié)議
一個(gè)完整http的請(qǐng)求過(guò)程:

下面是通過(guò)wireshark抓取的一個(gè)博客網(wǎng)站的登錄請(qǐng)求過(guò)程。


可以看到訪問(wèn)的賬號(hào)密碼都是明文傳輸,, 這樣客戶端發(fā)出的請(qǐng)求很容易被不法分子截取利用,,因此,HTTP協(xié)議不適合傳輸一些敏感信息,,比如:各種賬號(hào),、密碼等信息,使用http協(xié)議傳輸隱私信息非常不安全,。
一般http中存在如下問(wèn)題:
-
請(qǐng)求信息明文傳輸,,容易被竊聽(tīng)截取。
-
數(shù)據(jù)的完整性未校驗(yàn),,容易被篡改
-
沒(méi)有驗(yàn)證對(duì)方身份,,存在冒充危險(xiǎn)
為了解決這些問(wèn)題,就用到了HTTPS,。
HTTPS 協(xié)議(HyperText Transfer Protocol over Secure Socket Layer):一般理解為HTTP+SSL/TLS,,通過(guò) SSL證書(shū)來(lái)驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信進(jìn)行加密,。
那么SSL又是什么,?
SSL(Secure Socket Layer,安全套接字層):1994年為 Netscape 所研發(fā),,SSL 協(xié)議位于 TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議之間,,為數(shù)據(jù)通訊提供安全支持。
TLS(Transport Layer Security,,傳輸層安全):其前身是 SSL,,它最初的幾個(gè)版本(SSL 1.0、SSL 2.0,、SSL 3.0)由網(wǎng)景公司開(kāi)發(fā),,1999年從 3.1 開(kāi)始被 IETF 標(biāo)準(zhǔn)化并改名,發(fā)展至今已經(jīng)有 TLS 1.0,、TLS 1.1,、TLS 1.2 三個(gè)版本。SSL3.0和TLS1.0由于存在安全漏洞,,已經(jīng)很少被使用到,。TLS 1.3 改動(dòng)會(huì)比較大,目前還在草案階段,,目前使用最廣泛的是TLS 1.1,、TLS 1.2,。
SSL發(fā)展史(互聯(lián)網(wǎng)加密通信)
-
1994年NetSpace公司設(shè)計(jì)SSL協(xié)議(Secure Sockets Layout)1.0版本,但未發(fā)布,。
-
1995年NetSpace發(fā)布SSL/2.0版本,,很快發(fā)現(xiàn)有嚴(yán)重漏洞
-
1996年發(fā)布SSL/3.0版本,得到大規(guī)模應(yīng)用
-
1999年,,發(fā)布了SSL升級(jí)版TLS/1.0版本,,目前應(yīng)用最廣泛的版本
-
2006年和2008年,發(fā)布了TLS/1.1版本和TLS/1.2版本
瀏覽器在使用HTTPS傳輸數(shù)據(jù)的流程是什么,?

-
首先客戶端通過(guò)URL訪問(wèn)服務(wù)器建立SSL連接,。
-
服務(wù)端收到客戶端請(qǐng)求后,會(huì)將網(wǎng)站支持的證書(shū)信息(證書(shū)中包含公鑰)傳送一份給客戶端,。
-
客戶端的服務(wù)器開(kāi)始協(xié)商SSL連接的安全等級(jí),,也就是信息加密的等級(jí)。
-
客戶端的瀏覽器根據(jù)雙方同意的安全等級(jí),,建立會(huì)話密鑰,,然后利用網(wǎng)站的公鑰將會(huì)話密鑰加密,并傳送給網(wǎng)站,。
-
服務(wù)器利用自己的私鑰解密出會(huì)話密鑰,。
-
服務(wù)器利用會(huì)話密鑰加密與客戶端之間的通信。
HTTPS的缺點(diǎn)
-
HTTPS協(xié)議多次握手,,導(dǎo)致頁(yè)面的加載時(shí)間延長(zhǎng)近50%,;
-
HTTPS連接緩存不如HTTP高效,會(huì)增加數(shù)據(jù)開(kāi)銷(xiāo)和功耗,;
-
申請(qǐng)SSL證書(shū)需要錢(qián),,功能越強(qiáng)大的證書(shū)費(fèi)用越高。
-
SSL涉及到的安全算法會(huì)消耗 CPU 資源,,對(duì)服務(wù)器資源消耗較大,。
總結(jié)HTTPS和HTTP的區(qū)別:
-
https協(xié)議需要到CA申請(qǐng)證書(shū),一般免費(fèi)證書(shū)較少,,使用需要一定費(fèi)用,。
-
http是超文本傳輸協(xié)議,信息是明文傳輸,,https則是具有安全性的ssl加密傳輸協(xié)議,。
-
http和https使用連接方式不同,默認(rèn)端口也不一樣,,http是80,,https是443。
-
HTTPS協(xié)議是SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸,、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,,比http協(xié)議安全。