Android7以上抓包HTTPS

前言

在問題解決之前試了各種方法,始終抓不到HTTPS的包,用魅藍E2(Android6)安裝了FD的證書後測試,沒問題,用紅米Note7(Android9)就不行。後來才發現原來Android9版本不信任用戶的證書(在Android7以上都是)。
所以爲了解決該問題
1、用Android6以下版本的手機抓包 。
2、把證書安裝到系統裏(需要ROOT)。

準備階段

  1. 首先需要安裝openssl,點擊下載
  2. 打開Fiddler,依次點擊Tools–Options–HTTPS–Actions–Export Root Certificate to Desktop,證書就會導出到桌面。

證書轉換

系統證書的目錄是在/system/etc/security/cacerts中,可以看到文件都是以十六進制加.0結尾的,爲了讓系統信任該證書,就要轉換成系統能識別的文件。
1、先把證書(FiddlerRoot.cer)複製到OpenSSL-Win32\bin裏,然後在空白處按住SHIFT鍵,右鍵鼠標,選擇「在此處打開命令窗口」。
在這裏插入圖片描述
2、在打開的命令行中粘貼並執行命令
openssl x509 -inform der -subject_hash_old -in FiddlerRoot.cer
在這裏插入圖片描述
3、會得到一個8位的十六進制串,然後再執行
openssl x509 -inform der -text -in FiddlerRoot.cer -out e5c3944b.0
能被系統識別的證書文件就出來了,然後再把它移動到系統證書目錄/system/etc/security/cacerts中,重啓手機。

遇到問題

我重啓手機後,發現HTTPS還是沒有被成功解密,說明證書文件並沒有成功被信任??
然後我用記事本打開了生成好的證書文件,發現是這樣的
在這裏插入圖片描述
然後我在手機上隨便打開了一個系統證書文件,發現是這樣的
在這裏插入圖片描述
對比了文件的差別後,發現-----BEGIN CERTIFICATE-----開始到-----END CERTIFICATE-----應該在文件的最開頭,但使用openssl生成的順序相反,所以我手動把順序調換了一下,替換原來的證書文件,再次重啓手機。

結果

果然,成功了,查看系統證書列表
在這裏插入圖片描述 沒錯了,就是它。再次打開FD進行抓包後,之前沒有顯示的HTTPS已經能顯示了,當然,並不是所有的HTTPS都顯示了,沒有進行ssl-pinning的HTTPS都抓到了,這個問題我暫時還沒解決,試了用太極+JustTrustMe不行,不知道是什麼原因。