深入淺出看HTTP 與 HTTPS 的區別

2021-09-24 19:14:01 字數 2788 閱讀 9986

基本概念

http(hypertext transfer protocol:超文字傳輸協議)是一種用於分布式、協作式和超**資訊系統的應用層協議。 簡單來說就是一種發布和接收 html 頁面的方法,被用於在 web 瀏覽器和**伺服器之間傳遞資訊。

http 預設工作在 tcp 協議 80 埠,使用者訪問** http:// 打頭的都是標準 http 服務。

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

https(hypertext transfer protocol secure:超文字傳輸安全協議)是一種透過計算機網路進行安全通訊的傳輸協議。https 經由 http 進行通訊,但利用 ssl/tls 來加密資料報。https 開發的主要目的,是提供對**伺服器的身份認證,保護交換資料的隱私與完整性。

https 預設工作在 tcp 協議443埠,它的工作流程一般如以下方式:

1、tcp 三次同步握手

2、客戶端驗證伺服器數字證書

3、dh 演算法協商對稱加密演算法的金鑰、hash 演算法的金鑰

4、ssl 安全加密隧道協商完成

5、網頁以加密的方式傳輸,用協商的對稱加密演算法和金鑰加密,保證資料機密性;用協商的hash演算法進行資料完整性保護,保證資料不被篡改。

http 與 https 區別

http 明文傳輸,資料都是未加密的,安全性較差,https(ssl+http) 資料傳輸過程是加密的,安全性較好。

使用 https 協議需要到 ca(certificate authority,數字證書認證機構) 申請證書,一般免費證書較少,因而需要一定費用。證書頒發機構如:symantec、comodo、godaddy 和 globalsign 等。

http 頁面響應速度比 https 快,主要是因為 http 使用 tcp 三次握手建立連線,客戶端和伺服器需要交換 3 個包,而 https除了 tcp 的三個包,還要加上 ssl 握手需要的 9 個包,所以一共是 12 個包。

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

https 其實就是建構在 ssl/tls 之上的 http 協議,所以,要比較 https 比 http 要更耗費伺服器資源。

tcp 三次握手

在tcp/ip協議中,tcp協議通過三次握手建立乙個可靠的連線

第一次握手:客戶端嘗試連線伺服器,向伺服器傳送 syn 包(同步序列編號synchronize sequence numbers),syn=j,客戶端進入 syn_send 狀態等待伺服器確認

第二次握手:伺服器接收客戶端syn包並確認(ack=j+1),同時向客戶端傳送乙個 syn包(syn=k),即 syn+ack 包,此時伺服器進入 syn_recv 狀態

第三次握手:第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手

簡化:

https 的工作原理

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

1、客戶端發起 https 請求

使用者在瀏覽器裡輸入乙個 https **,然後連線到 server 的 443 埠。

2、服務端的配置

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

3、傳送證書

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

4、客戶端(瀏覽器)解析證書

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

如果證書沒有問題,那麼就生成乙個隨機數,然後用證書中的公鑰對該隨機數進行加密,這樣除非有私鑰,不然看不到這個隨機數

5、傳送加密資訊(驗證)

這個時候傳送的是用證書加密後的隨機數,目的就是讓伺服器得到這個隨機數,以後客戶端和伺服器的通訊就可以通過這個隨機值來進行對稱加密和對稱解密了。

6、伺服器解密資訊(驗證)

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

所以只要加密演算法夠彪悍,私鑰夠複雜,資料就夠安全。

7、傳輸加密後的資訊

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

8、客戶端解密資訊

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

原文: 

深入淺出HTTP

我們知道目前很多應用系統中的內容傳輸協議採用的http協議,因此不管你是前端人員 後端人員 運維人員,甚至是管理人員,都需要掌握http知識!該版本只有乙個命令get 沒有header等描述資料的資訊 伺服器傳送完畢,就關閉tcp連線。該版本增加了很多命令 增加status code 和header...

HTTPS 深入淺出 SNI

sni server name indication 用來解決乙個伺服器擁有多個網域名稱的情況 之前的 ssl 握手資訊中並沒有攜帶客戶端要訪問的目標位址。這樣會導致乙個問題,如果一台伺服器有多個虛擬主機,且每個主機的網域名稱不一樣,使用了不一樣的證書,該返回哪乙個給客戶端?做法就是在 client...

深入淺出http協議 學習筆記

參考資料 http是一套計算機通過網路進行通訊的規則,目前http協議是1.1,http是一種無狀態的協議 即web瀏覽器與web伺服器不需要建立持久的鏈結,遵循request response模型。http通訊機制 1.建立tcp連線 在http開始工作前,web瀏覽器首先通過網路與web伺服器建...