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