一,HTTP和HTTPS基本概念
深入學習這個東西前,我們先來從維基百科上看看它倆的概念。
HTTP:超文字傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分散式、協作式和超媒體資訊系統的應用層協議[1]。HTTP是全球資訊網的資料通訊的基礎。設計HTTP最初的目的是為了提供一種釋出和接收HTML頁面的方法。通過HTTP或者HTTPS協議請求的資源由統一資源識別符號(Uniform Resource Identifiers,URI)來標識。
HTTPS:超文字傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種通過計算機網路進行安全通訊的傳輸協議。HTTPS經由HTTP進行通訊,但利用SSL/TLS來加密資料包。HTTPS開發的主要目的,是提供對網站伺服器的身份認證,保護交換資料的隱私與完整性。這個協議由網景公司(Netscape)在1994年首次提出,隨後擴充套件到網際網路上。歷史上,HTTPS連線經常用於全球資訊網上的交易支付和企業資訊系統中敏感資訊的傳輸。在2000年代晚期和2010年代早期,HTTPS開始廣泛使用於保護所有型別網站上的網頁真實性,保護賬戶和保持使用者通訊,身份和網路瀏覽的私密性。
二,HTTP和HTTPS的差異
1,從上面概念也可以看出來HTTP是不安全的,且攻擊者通過監聽和中間人攻擊等手段,可以獲取網站帳戶和敏感資訊等。HTTPS被設計為可防止前述攻擊,並在正確配置時被認為是安全的。
2,HTTP的URL由“http://”起始且預設使用埠80,而HTTPS的URL由“https://”起始且預設使用埠443。
3,HTTP協議執行在TCP之上,所有傳輸的內容都是明文,客戶端和伺服器端都無法驗證對方的身份。HTTPS是執行在SSL/TLS之上的HTTP協議,SSL/TLS執行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的金鑰用伺服器方的證書進行了非對稱加密。
1)對稱加密:金鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密演算法有DES、AES等;
2)非對稱加密:金鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同金鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密演算法有RSA、DSA等。
三,HTTPS工作原理
下面看一下網站訪問過程:
大家很明顯發現目前大部分網站使用的還是http協議,下面我們通過一個圖片很容易的瞭解一下網站訪問的一個過程。
瞭解完網站訪問後我們來看一下使用HTTPS的工作原理
(1)客戶使用HTTPS的URL訪問Web伺服器,要求與Web伺服器建立SSL連線。
(2)Web伺服器收到客戶端請求後,會將網站的證書資訊(證書中包含公鑰)傳送一份給客戶端。
(3)客戶端的瀏覽器與Web伺服器開始協商SSL/TLS連線的安全等級,也就是資訊加密的等級。
(4)客戶端的瀏覽器根據雙方同意的安全等級,建立會話金鑰,然後利用網站的公鑰將會話金鑰加密,並傳送給網站。
(5)Web伺服器利用自己的私鑰解密出會話金鑰。
(6)Web伺服器利用會話金鑰加密與客戶端之間的通訊。
從上面可以總結出HTTPS的優點:
(1)客戶端產生的金鑰只有客戶端和伺服器端能得到;
(2)加密的資料只有客戶端和伺服器端才能得到明文;
(3)客戶端到服務端的通訊是安全的。
另外谷歌曾在2014年8月份調整搜尋引擎演算法,並稱“比起同等HTTP網站,採用HTTPS加密的網站在搜尋結果中的排名將會更高”。
四,HTTPS的侷限/缺點
我們說了這麼多HTTPS的優點,難道它就沒有缺點或者說是侷限嗎?當然有,畢竟萬物不可完美!
1,HTTPS比HTTP耗費更多伺服器資源(https其實就是建構在SSL/TLS之上的 http協議,所以要比較https比http多用多少伺服器資源,主要看SSL/TLS本身消耗多少伺服器資源。)
2,耗費的資源多,過程也複雜,想當然訪問不如HTTP高效。大流量網站非必要也不會採用,流量成本太高。
3,HTTPS並不能防止站點被網路蜘蛛抓取。在某些情形中,被加密資源的URL可僅通過截獲請求和響應的大小推得,這就可使攻擊者同時知道明文(公開的靜態內容)和密文(被加密過的明文),從而使選擇密文攻擊成為可能。
4,SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
5,SSL證書通常需要繫結IP,不能在同一IP上繫結多個域名,IPv4資源不可能支撐這個消耗。