HTTP和HTTPS的區別

一、簡述

1??HTTP (全稱 Hyper Text Transfer Protocol),就是超文本傳輸協議,用來在 Internet 上傳送超文本。是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用于從 WWW 服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。

2??HTTPS:安全超文本傳輸協議。簡單講是 HTTP 的安全版,即 HTTP 下加入 SSL 層,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL。

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

超文本傳輸協議 HTTP 被用于 Web 瀏覽器和網站服務器之間傳遞信息,HTTP 以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了 Web 瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息。因此,HTTP 不適合傳輸敏感信息,比如:資金賬戶、密碼等。為了解決 HTTP 的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議 HTTPS,為了數據傳輸的安全,HTTPS 在 HTTP 的基礎上加入了 SSL 協議,SSL 依靠證書來驗證服務器的身份,并為瀏覽器和服務器之間的通信加密。

二、HTTP與HTTPS的區別

HTTP 傳輸的數據都是未加密的,也就是明文的,因此使用 HTTP 傳輸信息非常不安全。為了保證數據能加密傳輸,網景公司設計了 SSL(Secure Sockets Layer) 協議用于對 HTTP 傳輸的數據進行加密,從而就誕生了 HTTPS。二者主要區別如下:

1??HTTPS 需要到 ca 申請證書,一般免費證書較少,因而需要一定費用。
2??HTTP 信息是明文傳輸,HTTPS 則是具有安全性的 ssl 加密傳輸協議。
3??HTTP 和 HTTPS 連接方式完全不同,端口也不一樣,前者是 80,后者是 443。
4??HTTP 的連接很簡單,是無狀態的。HTTPS 是由 SSL+HTTP 構建的可進行加密傳輸、身份認證的網絡協議,比 HTTP 安全。

三、HTTPS的工作原理

由于 HTTPS 能夠加密信息,避免敏感信息被第三方獲取,所以很多銀行網站或電子郵箱等等安全級別較高的服務都會采用 HTTPS。

客戶端在使用 HTTPS 方式與 Web 服務器通信時有以下幾個步驟,如圖所示。
1??客戶使用 HTTPS 的 URL 訪問 Web 服務器,要求與 Web 服務器建立 SSL 連接。
2??Web 服務器收到客戶端請求后,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。
3??客戶端的瀏覽器與 Web 服務器開始協商 SSL 連接的安全等級,也就是信息加密的等級。
4??客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然后利用網站的公鑰將會話密鑰加密,并傳送給網站。
5??Web 服務器利用自己的私鑰解密出會話密鑰。
6??Web 服務器利用會話密鑰加密與客戶端之間的通信。

四、HTTPS的優點

盡管 HTTPS 并非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊,但 HTTPS 仍是現行架構下最安全的解決方案,主要有以下幾個好處:
?1??使用 HTTPS 可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2??HTTPS 是由 SSL+HTTP 構建的可進行加密傳輸、身份認證的網絡協議,要比 HTTP 安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。
3??HTTPS 是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
4??谷歌曾在2014年8月份調整搜索引擎算法,并稱“比起同等 HTTP 網站,采用 HTTPS 加密的網站在搜索結果中的排名將會更高”。

五、HTTPS的缺點

1??HTTPS 握手階段比較費時,會使頁面的加載時間延長近 50%,增加 10% 到 20% 的耗電;
2??HTTPS 連接緩存不如 HTTP 高效,會增加數據開銷和功耗,甚至已有的安全措施也會因此而受到影響;
3??SSL 證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用。
4??SSL 證書通常需要綁定 IP,不能在同一 IP 上綁定多個域名,IPv4 資源不可能支撐這個消耗。
5??HTTPS 的加密范圍也比較有限,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什么作用。最關鍵的,SSL 證書的信用鏈體系并不安全,特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行。

六、如何將網站從HTTP切換到HTTPS

需要將頁面中所有的鏈接,例如 js,css,圖片等等鏈接都由 HTTP 改為 HTTPS。例如:http://www.baidu.com/改為https://www.baidu.com/

這里雖然將 HTTP 切換成了 HTTPS,還是建議保留 HTTP。所以在切換的時候可以做 HTTP 和 HTTPS 的兼容,具體實現方式是,去掉頁面鏈接中的 HTTP 頭部,這樣可以自動匹配 HTTP 頭和 HTTPS 頭。例如:將http://www.baidu.com/改為//www.baidu.com。然后當用戶從 HTTP 的入口進入訪問頁面時,頁面就是 HTTP,如果用戶是從 HTTPS 的入口進入訪問頁面,頁面即是 HTTPS 的。

七、理解HTTPS

HTTP 誘發了一種經典的攻擊方式——中間人攻擊:

對于這種情況,可以使用加密方案應對。比如使用 AES 加密,服務端和客戶端先約定一個隨機生成的密鑰 key ,后續的通信中,所有的信息都使用這個密鑰進行 AES 加密:

如此雖然后面的通信過程安全了,但是在第一發送 AES 密鑰的時候還是存在被中間人攔截的風險,一旦中間人攔截到密鑰,可用對密鑰進行更換或者直接解密請求內容:

此時可以使用不對稱加密,來專門對密鑰的傳輸做一次額外的保護。不對稱加密會有兩個密鑰,一個是公鑰,一個是私鑰。明文可以使用公鑰加密私鑰解密,也可以使用私鑰加密公鑰解密。現在比較通用的非對稱加密算法有 RSA 。

既然都使用了不對稱加密,為啥只對 AES 的密鑰做不對稱加密,好像多此一舉,完全可以對后續所有的通信信息全都使用不對稱加密。因為不對稱加密相比較對稱加密性能上存在明顯的劣勢,可能一個請求中多消耗幾 ms 或者幾 ns 無所謂,但是請求到達服務端是要進行解密,每個請求都多消耗幾 ms 累計起來還是非常可怕的。

上面方案看起來很安全,中間人即使攔截到公鑰,由于不知道私鑰貌似也沒辦法解密。實際上中間人完全不需要解密信息,他可以生成一對新的公私鑰發送給客戶端,后續中間人使用自己創造的私鑰進行解密,然后通過服務端生成的公鑰進行加密返回給服務端,以此達到攻擊的目的:

CA 證書

上面的問題僅通過客戶端和服務端已經沒辦法了,這時候需要引入新的第三方機構,一個頒發 CA 證書的機構。常見的第三方 CA 機構有:Symantec(賽門鐵克)、Comodo(科莫多)、GeoTrust(環度網信)、GoDaddy、Thawte和daoRapidSSL等等。

在中間人攻擊中,遇到的問題不是加密算法不夠神奇,不是密鑰方式不夠嚴謹,而是無法向客戶端表明給到的公鑰是服務端的,是不是很像無法證明我是我的問題。

所以第三方機構應運而生,第三方機構只做一件事情,將服務端的公鑰刻上了名字(CA 證書),客戶端接收到公鑰之后,只需要來第三方機構這里查詢,就能知道這個公鑰是不是真的服務器,然后再將自己生成的 AES 密鑰使用 CA 證書中解密得到的公鑰進行加密后發送給服務端。最后服務端使用私鑰解密得到 AES 密鑰,就可以愉快的和客戶端進行通信了。

CA 機構驗證不是每次都要去 CA 機構查詢。這樣做未免太耗時,尤其是很多 CA 機構的服務都在海外,這樣一來一去消耗的時間太多了。CA 機構高明的地方就在于,我們去找它注冊公鑰,它會使用另一個來注冊的公司的私鑰對我們的公鑰加密,得到一個我們的公鑰的指紋(全球唯一),然后將這家公司的公鑰信息(其實也是證書)和我們的公鑰以及我們公鑰的指紋打包成一個證書。

當使用 HTTPS 將證書下發給客戶端校驗時,客戶端(比如瀏覽器)從證書中看到了上級證書的信息,恰巧這個證書就在瀏覽器(或者本機)中,已經被驗證過是合法的,瀏覽器只要使用這個證書中的公鑰將我們的公鑰指紋進行解密,然后比對我們的公鑰信息就知道我們也是的合法的。因為假證書中的公鑰簽名不可能被合法的上級證書中公鑰解密 。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 什么是 HTTPS? HTTPS (基于安全套接字層的超文本傳輸協議 或者是 HTTP over SSL) 是一個...
    majorty閱讀 481評論 0 1
  • 前言 一直以來想總結下HTTPS和HTTP的區別,近來看了些相關資料,在此總結下。首先給出參考的資料,并表示感謝:...
    WQ_UESTC閱讀 464評論 0 5
  • 什么是 HTTPS? HTTPS (基于安全套接字層的超文本傳輸協議 或者是 HTTP over SSL) 是一個...
    田旭1閱讀 413評論 0 4
  • 今天在做雅虎的時候,發現用第三方工具截取不到客戶端與服務端的通訊,以前重來沒碰到過這種情況,仔細看了看,它的url...
    單純的土豆閱讀 989評論 0 1
  • 環境 mac os , 文件路徑:桌面 Hexo文件夾 配置本地 hexo 1 安裝 Node.js 2 ...
    傳火的余燼閱讀 2,025評論 0 2