1. 程式人生 > >HTTP和HTTPS區別

HTTP和HTTPS區別

一、HTTP和HTTPS的基本概念

HTTP:是網際網路上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準(TCP),用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。

HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊保安通道,來保證資料傳輸的安全;另一種就是確認網站的真實性。

二、HTTP與HTTPS有什麼區別?

HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的資料進行加密,從而就誕生了HTTPS。

HTTPS加密、加密、及驗證過程,如下圖所示:

HTTP與HTTPS的區別-馬海祥部落格

簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全。

HTTPS和HTTP的區別主要如下:

1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。

2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

三、HTTPS的工作原理

我們都知道HTTPS能夠加密資訊,以免敏感資訊被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會採用HTTPS協議。

HTTP與HTTPS的區別-馬海祥部落格

1、客戶端發起HTTPS請求

這個沒什麼好說的,就是使用者在瀏覽器裡輸入一個https網址,然後連線到server的443埠。

2、服務端的配置

採用HTTPS協議的伺服器必須要有一套數字證書,可以自己製作,也可以向組織申請,區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。

這套證書其實就是一對公鑰和私鑰,如果對公鑰和私鑰不太理解,可以想象成一把鑰匙和一個鎖頭,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你一個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。

3、傳送證書

這個證書其實就是公鑰,只是包含了很多資訊,如證書的頒發機構,過期時間等等。

4、客戶端解析證書

這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。

如果證書沒有問題,那麼就生成一個隨機值,然後用證書對該隨機值進行加密,就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。

5、傳送加密資訊

這部分傳送的是用證書加密後的隨機值,目的就是讓服務端得到這個隨機值,以後客戶端和服務端的通訊就可以通過這個隨機值來進行加密解密了。

6、服務段解密資訊

服務端用私鑰解密後,得到了客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密,所謂對稱加密就是,將資訊和私鑰通過某種演算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。

7、傳輸加密後的資訊

這部分資訊是服務段用私鑰加密後的資訊,可以在客戶端被還原。

8、客戶端解密資訊

客戶端用之前生成的私鑰解密服務段傳過來的資訊,於是獲取瞭解密後的內容,整個過程第三方即使監聽到了資料,也束手無策。

四、HTTPS要比HTTP多用多少伺服器資源?

HTTPS其實就是建構在SSL/TLS之上的 HTTP協議,所以,要比較HTTPS比HTTP多用多少伺服器資源,馬海祥認為主要看SSL/TLS本身消耗多少伺服器資源。

HTTP與HTTPS的區別-馬海祥部落格

HTTP使用TCP三次握手建立連線,客戶端和伺服器需要交換3個包(具體可檢視馬海祥部落格《HTTP服務的七層架構技術解析及運用》的相關介紹);HTTPS除了TCP的三個包,還要加上ssl握手需要的9個包,所以一共是12個包。

HTTP建立連線,按照下面連結中針對Computer Science House的測試,是114毫秒;HTTPS建立連線,耗費436毫秒,ssl部分花費322毫秒,包括網路延時和ssl本身加解密的開銷(伺服器根據客戶端的資訊確定是否需要生成新的主金鑰;伺服器回覆該主金鑰,並返回給客戶端一個用主金鑰認證的資訊;伺服器向客戶端請求數字簽名和公開金鑰)。

當SSL連線建立後,之後的加密方式就變成了3DES等對於CPU負荷較輕的對稱加密方式,相對前面SSL建立連線時的非對稱加密方式,對稱加密方式對CPU的負荷基本可以忽略不記,所以問題就來了,如果頻繁的重建ssl的session,對於伺服器效能的影響將會是致命的,儘管開啟HTTPS保活可以緩解單個連線的效能問題,但是對於併發訪問使用者數極多的大型網站,基於負荷分擔的獨立的SSL termination proxy就顯得必不可少了,Web服務放在SSL termination proxy之後,SSL termination proxy既可以是基於硬體的,譬如F5;也可以是基於軟體的,譬如維基百科用到的就是Nginx。

那採用HTTPS後,到底會多用多少伺服器資源,2010年1月Gmail切換到完全使用HTTPS, 前端處理SSL機器的CPU負荷增加不超過1%,每個連線的記憶體消耗少於20KB,網路流量增加少於2%,由於Gmail應該是使用N臺伺服器分散式處理,所以CPU負荷的資料並不具有太多的參考意義,每個連線記憶體消耗和網路流量資料有參考意義,這篇文章中還列出了單核每秒大概處理1500次握手(針對1024-bit 的 RSA),這個資料很有參考意義。

Heartbleed這個被稱作史上最大的網路安全漏洞,想必很多人都有所耳聞,Heartbleed之所以能夠出現,其實和我們這個問題關係還不小,前面我們談到了頻繁重建SSL/TLS的session對於伺服器影響是致命的,所以,聰明的RFC在2012年提出了RFC6520 TLS的心跳擴充套件,這個協議本身是簡單和完美的,通過在客戶端和伺服器之間來回傳送心跳的請求和應答,保活TLS session,減少重建TLS的session的效能開銷,令人遺憾的是,openssl在實現這個心跳擴充套件時,犯了一個低階的錯誤,沒有對收到的心跳請求進行長度檢查,直接根據心跳請求長度拷貝資料區,導致簡單的心跳應答中可能包含了伺服器端的核心資料區內容,使用者名稱,密碼,信用卡資訊,甚至伺服器的私有金鑰都有可能洩露。

五、HTTPS的優點

正是由於HTTPS非常的安全,攻擊者無法從中找到下手的地方,從站長的角度來說,HTTPS的優點有以下2點:

1、SEO方面

谷歌曾在2014年8月份調整搜尋引擎演算法,並稱“比起同等HTTP網站,採用HTTPS加密的網站在搜尋結果中的排名將會更高”。

2、安全性

儘管HTTPS並非絕對安全,掌握根證書的機構、掌握加密演算法的組織同樣可以進行中間人形式的攻擊,但HTTPS仍是現行架構下最安全的解決方案,主要有以下幾個好處:

(1)、使用HTTPS協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

(2)、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,確保資料的完整性。

(3)、HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

六、HTTPS的缺點

雖然說HTTPS有很大的優勢,但其相對來說,還是有些不足之處的,具體來說,有以下2點:

1、SEO方面

據ACM CoNEXT資料顯示,使用HTTPS協議會使頁面的載入時間延長近50%,增加10%到20%的耗電,此外,HTTPS協議還會影響快取,增加資料開銷和功耗,甚至已有安全措施也會受到影響也會因此而受到影響。

而且HTTPS協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。

最關鍵的,SSL證書的信用鏈體系並不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。

2、經濟方面

(1)、SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。

(2)、SSL證書通常需要繫結IP,不能在同一IP上繫結多個域名,IPv4資源不可能支撐這個消耗(SSL有擴充套件可以部分解決這個問題,但是比較麻煩,而且要求瀏覽器、作業系統支援,Windows XP就不支援這個擴充套件,考慮到XP的裝機量,這個特性幾乎沒用)。

(3)、HTTPS連線快取不如HTTP高效,大流量網站如非必要也不會採用,流量成本太高。

(4)、HTTPS連線伺服器端資源佔用高很多,支援訪客稍多的網站需要投入更大的成本,如果全部採用HTTPS,基於大部分計算資源閒置的假設的VPS的平均成本會上去。

(5)、HTTPS協議握手階段比較費時,對網站的相應速度有負面影響,如非必要,沒有理由犧牲使用者體驗。

七、SSL的作用

(1)、認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

(2)、加密資料以防止資料中途被竊取;

(3)、維護資料的完整性,確保資料在傳輸過程中不被改變。

而SSL證書指的是在SSL通訊中驗證通訊雙方身份的數字檔案,一般分為伺服器證書和客戶端證書,我們通常說的SSL證書主要指伺服器證書,SSL證書由受信任的數字證書頒發機構CA(如VeriSign,GlobalSign,WoSign等),在驗證伺服器身份後頒發,具有伺服器身份驗證和資料傳輸加密功能,分為擴充套件驗證型(EV)SSL證書、組織驗證型(OV)SSL證書、和域名驗證型(DV)SSL證書。