首頁 > 常見問題 > 主體

https抓包原理

(*-*)浩
發布: 2019-08-21 10:33:21
原創
9812 人瀏覽過

在一節中,我們分析了HTTPS的安全通訊過程,知道了HTTPS可以有效防止中間人攻擊。但用過抓包工具的人都知道,例如Charles,Fiddler是可以抓取HTTPS請求並解密的,而它們又是如何做到的呢?

https抓包原理

首先來看Charles官網對HTTPS代理的描述:(推薦學習:web前端影片教學

Charles作為一個中間人代理,當瀏覽器和伺服器通訊時,Charles接收伺服器的證書,但動態產生一張證書發送給瀏覽器,也就是說Charles作為中間代理在瀏覽器和伺服器之間通信,所以通信的資料可以被Charles攔截並解密。由於Charles更改了證書,瀏覽器校驗不通過會給予安全警告,必須安裝Charles的證書後才能進行正常存取。

Charles需要做的事情是對客戶端偽裝服務端,對服務端偽裝客戶端:

截獲真實客戶端的HTTPS請求,偽裝客戶端向真實服務端發送HTTPS請求

接受真實伺服器回應,用Charles自己的憑證偽裝服務端傳送資料內容給真實客戶端

下面來看具體的流程:

客戶端向伺服器發起HTTPS請求

Charles攔截客戶端的請求,偽裝成客戶端向伺服器進行請求

伺服器向「客戶端」(實際上是Charles)傳回伺服器的CA證書

Charles攔截伺服器的回應,取得伺服器憑證公鑰,然後自己製作一張證書,將伺服器憑證取代後傳送給客戶端。 (這一步,Charles拿到了伺服器憑證的公鑰)

客戶端接收到「伺服器」(實際上是Charles)的憑證後,產生一個對稱金鑰,用Charles的公鑰加密,發送給「伺服器」(Charles)

Charles攔截客戶端的回應,用自己的私鑰解密對稱金鑰,然後用伺服器憑證公鑰加密,傳送給伺服器。 (這一步,Charles拿到了對稱金鑰)

伺服器用自己的私鑰解密對稱金鑰,向「客戶端」(Charles)發送回應

Charles攔截伺服器的回應,替換成自己的憑證後傳送給客戶端

至此,連線建立,Charles拿到了伺服器憑證的公鑰和客戶端與伺服器協商的對稱金鑰,之後就可以解密或修改加密的封包了。

HTTPS抓包的原理還挺簡單的,簡單來說,就是Charles作為“中間人代理”,拿到了伺服器憑證公鑰和HTTPS連接的對稱金鑰,前提是客戶端選擇信任並安裝Charles的CA證書,否則客戶端就會「報警」並中止連線。這樣看來,HTTPS還是很安全的

#

以上是https抓包原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!