淺談Charles抓取HTTPS原理

關(guān)于HTTPS,你需要知道的全部中,分析了HTTPS的安全通信過(guò)程,知道了HTTPS可以有效防止中間人攻擊。但用過(guò)抓包工具的人都知道,比如Charles,F(xiàn)iddler是可以抓取HTTPS請(qǐng)求并解密的,它們是如何做到的呢?

首先來(lái)看Charles官網(wǎng)對(duì)HTTPS代理的描述:

Charles can be used as a man-in-the-middle HTTPS proxy, enabling you to view in plain text the communication between web browser and SSL web server.`

Charles does this by becoming a man-in-the-middle. Instead of your browser seeing the server’s certificate, Charles dynamically generates a certificate for the server and signs it with its own root certificate (the Charles CA Certificate). Charles receives the server’s certificate, while your browser receives Charles’s certificate. Therefore you will see a security warning, indicating that the root authority is not trusted. If you add the Charles CA Certificate to your trusted certificates you will no longer see any warnings – see below for how to do this.

Charles作為一個(gè)“中間人代理”,當(dāng)瀏覽器和服務(wù)器通信時(shí),Charles接收服務(wù)器的證書,但動(dòng)態(tài)生成一張證書發(fā)送給瀏覽器,也就是說(shuō)Charles作為中間代理在瀏覽器和服務(wù)器之間通信,所以通信的數(shù)據(jù)可以被Charles攔截并解密。由于Charles更改了證書,瀏覽器校驗(yàn)不通過(guò)會(huì)給出安全警告,必須安裝Charles的證書后才能進(jìn)行正常訪問(wèn)。

下面來(lái)看具體的流程:

Charles抓取HTTPS流程
  1. 客戶端向服務(wù)器發(fā)起HTTPS請(qǐng)求

  2. Charles攔截客戶端的請(qǐng)求,偽裝成客戶端向服務(wù)器進(jìn)行請(qǐng)求

  3. 服務(wù)器向“客戶端”(實(shí)際上是Charles)返回服務(wù)器的CA證書

  4. Charles攔截服務(wù)器的響應(yīng),獲取服務(wù)器證書公鑰,然后自己制作一張證書,將服務(wù)器證書替換后發(fā)送給客戶端。(這一步,Charles拿到了服務(wù)器證書的公鑰)

  5. 客戶端接收到“服務(wù)器”(實(shí)際上是Charles)的證書后,生成一個(gè)對(duì)稱密鑰,用Charles的公鑰加密,發(fā)送給“服務(wù)器”(Charles)

  6. Charles攔截客戶端的響應(yīng),用自己的私鑰解密對(duì)稱密鑰,然后用服務(wù)器證書公鑰加密,發(fā)送給服務(wù)器。(這一步,Charles拿到了對(duì)稱密鑰)

  7. 服務(wù)器用自己的私鑰解密對(duì)稱密鑰,向“客戶端”(Charles)發(fā)送響應(yīng)

  8. Charles攔截服務(wù)器的響應(yīng),替換成自己的證書后發(fā)送給客戶端

  9. 至此,連接建立,Charles拿到了 服務(wù)器證書的公鑰 和 客戶端與服務(wù)器協(xié)商的對(duì)稱密鑰,之后就可以解密或者修改加密的報(bào)文了。

HTTPS抓包的原理還是挺簡(jiǎn)單的,簡(jiǎn)單來(lái)說(shuō),就是Charles作為“中間人代理”,拿到了 服務(wù)器證書公鑰HTTPS連接的對(duì)稱密鑰,前提是客戶端選擇信任并安裝Charles的CA證書,否則客戶端就會(huì)“報(bào)警”并中止連接。這樣看來(lái),HTTPS還是很安全的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容