雖然我們常常說http請求、http協(xié)議,但是實際使用中,絕大說的網(wǎng)站現(xiàn)在都采用的是https協(xié)議,這也是未來互聯(lián)網(wǎng)發(fā)展的趨勢。
首先,學(xué)習(xí)https之前我們先回顧一下http的相關(guān)知識,南京軟件開發(fā)之Http協(xié)議
一個完整http的請求過程:
下面是通過wireshark抓取的一個博客網(wǎng)站的登錄請求過程。
可以看到訪問的賬號密碼都是明文傳輸, 這樣客戶端發(fā)出的請求很容易被不法分子截取利用,因此,HTTP協(xié)議不適合傳輸一些敏感信息,比如:各種賬號、密碼等信息,使用http協(xié)議傳輸隱私信息非常不安全。
一般http中存在如下問題:
-
請求信息明文傳輸,容易被竊聽截取。
-
數(shù)據(jù)的完整性未校驗,容易被篡改
-
沒有驗證對方身份,存在冒充危險
為了解決這些問題,就用到了HTTPS。
HTTPS 協(xié)議(HyperText Transfer Protocol over Secure Socket Layer):一般理解為HTTP+SSL/TLS,通過 SSL證書來驗證服務(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,它最初的幾個版本(SSL 1.0、SSL 2.0、SSL 3.0)由網(wǎng)景公司開發(fā),1999年從 3.1 開始被 IETF 標(biāo)準(zhǔn)化并改名,發(fā)展至今已經(jīng)有 TLS 1.0、TLS 1.1、TLS 1.2 三個版本。SSL3.0和TLS1.0由于存在安全漏洞,已經(jīng)很少被使用到。TLS 1.3 改動會比較大,目前還在草案階段,目前使用最廣泛的是TLS 1.1、TLS 1.2。
SSL發(fā)展史(互聯(lián)網(wǎng)加密通信)
-
1994年NetSpace公司設(shè)計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升級版TLS/1.0版本,目前應(yīng)用最廣泛的版本
-
2006年和2008年,發(fā)布了TLS/1.1版本和TLS/1.2版本
瀏覽器在使用HTTPS傳輸數(shù)據(jù)的流程是什么?
-
首先客戶端通過URL訪問服務(wù)器建立SSL連接。
-
服務(wù)端收到客戶端請求后,會將網(wǎng)站支持的證書信息(證書中包含公鑰)傳送一份給客戶端。
-
客戶端的服務(wù)器開始協(xié)商SSL連接的安全等級,也就是信息加密的等級。
-
客戶端的瀏覽器根據(jù)雙方同意的安全等級,建立會話密鑰,然后利用網(wǎng)站的公鑰將會話密鑰加密,并傳送給網(wǎng)站。
-
服務(wù)器利用自己的私鑰解密出會話密鑰。
-
服務(wù)器利用會話密鑰加密與客戶端之間的通信。
HTTPS的缺點
-
HTTPS協(xié)議多次握手,導(dǎo)致頁面的加載時間延長近50%;
-
HTTPS連接緩存不如HTTP高效,會增加數(shù)據(jù)開銷和功耗;
-
申請SSL證書需要錢,功能越強大的證書費用越高。
-
SSL涉及到的安全算法會消耗 CPU 資源,對服務(wù)器資源消耗較大。
總結(jié)HTTPS和HTTP的區(qū)別:
-
https協(xié)議需要到CA申請證書,一般免費證書較少,使用需要一定費用。
-
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é)議安全。