http協議 與 https協議 的區別

2022-06-28 21:21:08 字數 3483 閱讀 5005

超文字傳輸協議http協議被用於在web瀏覽器和**伺服器之間傳遞資訊,http協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和**伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,http協議不適合傳輸一些敏感資訊,比如:信用卡號、密碼等支付資訊。

為了解決http協議的這一缺陷,需要使用另一種協議:安全套接字層超文字傳輸協議https,為了資料傳輸的安全,https在http的基礎上加入了ssl協議,ssl依靠證書來驗證伺服器的身份,並為瀏覽器和伺服器之間的通訊加密。

一、http和https的基本概念

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

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

二、http與https有什麼區別?

http協議傳輸的資料都是未加密的,也就是明文的,因此使用http協議傳輸隱私資訊非常不安全,為了保證這些隱私資料能加密傳輸,於是網景公司設計了ssl(secure sockets layer)協議用於對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協議。

客戶端在使用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)谷歌曾在2023年8月份調整搜尋引擎演算法,並稱「比起同等http**,採用https加密的**在搜尋結果中的排名將會更高」。

五、https的缺點

雖然說https有很大的優勢,但其相對來說,還是存在不足之處的:

(1)https協議握手階段比較費時,會使頁面的載入時間延長近50%,增加10%到20%的耗電;

(2)https連線快取不如http高效,會增加資料開銷和功耗,甚至已有的安全措施也會因此而受到影響;

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

(4)ssl證書通常需要繫結ip,不能在同一ip上繫結多個網域名稱,ipv4資源不可能支撐這個消耗。

(5)https協議的加密範圍也比較有限,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。最關鍵的,ssl證書的信用鏈體系並不安全,特別是在某些國家可以控制ca根證書的情況下,中間人攻擊一樣可行。

六、http切換到https

如果需要將**從http切換到https到底該如何實現呢?

btw,這裡雖然將http切換為了https,還是建議保留http。所以我們在切換的時候可以做http和https的相容,具體實現方式是,去掉頁面鏈結中的http頭部,這樣可以自動匹配http頭和https頭。例如:將改為然後當使用者從http的入口進入訪問頁面時,頁面就是http,如果使用者是從https的入口進入訪問頁面,頁面即使https的。

再來看一下https協議:

我們都知道http並非是安全傳輸,而https是相對安全的,在傳輸資料之前,需要客戶端和服務進行一次握手,在握手過程中確立雙方加密傳輸資料的密碼資訊,然後在後續通訊過程中就使用協商金鑰進行對稱加密通訊。具體過程見下圖:

1)客戶端發起https請求

即使用者在瀏覽器裡輸入乙個https**連線到伺服器端口。

2)服務端初步響應

採用https協議的伺服器必須要有一套數字證書,這套證書其實就是一對公鑰和私鑰,可以想象成一把鑰匙和乙個鎖頭,只有你乙個人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個鎖把重要的東西鎖起來,然後發給你,因為只有你乙個人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來的東西。將證書發回給瀏覽器,證書包含證書的頒發機構、過期時間等。

3)客戶端解析證書

客戶端首先會驗證證書是否有效,比如頒發證書的機構是否合法,證書中包含的**位址是否與正在訪問的位址一致、過期時間等,如果發現異常,則提示證書存在問題,如果證書沒有問題,那麼客戶端就生成乙個隨機值,然後用證書對該隨機值進行加密。

4)客戶端傳送加密資訊

客戶端傳送的是用證書加密後的隨機值。

5) 伺服器解密資訊

服務端用私鑰解密後,得到了客戶端傳過來的隨機值,然後把內容通過該值進行對稱加密(所謂對稱加密就是將資訊和私鑰通過某種演算法混合在一起)。

6)伺服器傳送加密後的資訊

伺服器傳送的是服務端用隨機值進行對稱加密後的資訊。

7) 客戶端解密資訊

客戶端用之前生成的隨機值解密服務端傳過來的資訊,客戶端就獲取了解密後的內容。

HTTP協議 HTTPS協議

http協議是基於tcp協議的,當然是要先建立tcp連線了。目前使用的http協議大部分都是1.1.在1.1的協議裡面,預設是開啟了keep alive的,這樣建立的tcp連線,就可以在多次請求中復用。http的報文大概分成三大部分。第一部分是請求行,第二部分是請求的首部,第三部分才是請求的正文實體...

HTTP協議與HTTPS協議的區別

https secure hypertext transfer protocol 安全超文字傳輸協議 它是乙個安全通訊通道,它基於http開發,用於在客戶計算機和伺服器之間交換資訊,它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版。它是由netscape開發並內置於其瀏覽器中,...

HTTP協議與HTTPS協議的區別

1 http協議 hypertext transfer protocol,超文字傳輸協議 超文字傳輸協議http協議被用於在web瀏覽器和 伺服器之間傳遞資訊,http協議以 明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者擷取了web瀏覽器和 伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,...