面試題之--Charles抓包原理

前言

面試官:面試官問我iOS開發過程中使用了那些抓包工具?

回覆:Charles,Wireshark(可以抓取長連接包)等工具

面試官:然後緊接着面試官問我,有沒有抓過https的包?

回覆:使用Charles 工具抓過,

面試官:那你說說Charles抓https的抓包原理?

回覆:如果直接問https的原理(可查看http與https的愛恨情仇),還可以直接回復,問了個這個就懵逼了;之前確實沒有仔細考慮過這個問題

Charles抓包原理

經過自己的考慮和網上搜索查詢之後得出下面結論,

圖片爲挪用別人博客,感覺很完美,就直接使用了附上博客鏈接:https://blog.csdn.net/fox64194167/article/details/80387696

  1. 客戶端向服務器發起HTTPS請求
  2. Charles攔截客戶端的請求,僞裝成客戶端向服務器進行請求
  3. 服務器向“客戶端”(實際上是Charles)返回服務器的CA證書
  4. Charles攔截服務器的響應,獲取服務器證書公鑰,然後自己製作一張證書,將服務器證書替換後發送給客戶端。
  5. 客戶端接收到“服務器”(實際上是Charles)的證書後,生成一個對稱密鑰,用Charles的公鑰加密,發送給“服務器”(Charles)
  6. Charles攔截客戶端的響應,用自己的私鑰解密對稱密鑰(Charles拿到了對稱密鑰),然後用服務器證書公鑰加密,發送給服務器。
  7. 服務器用自己的私鑰解密對稱密鑰,向“客戶端”(Charles)發送響應
  8. Charles攔截服務器的響應,替換成自己的證書後發送給客戶端
  9. 至此,連接建立,Charles拿到了 服務器證書的公鑰 和 客戶端與服務器協商的對稱密鑰,之後就可以解密或者修改加密的報文了。

還有個問題就是問抓取長連接:可以使用工具Wireshark,

使用過程程需要連接usb,並且在終端授權:rvictl -s 手機UUID(可以使用xcode,iTools 等工具查看)

總結:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章