Android 7.0 (API 24)的應(yīng)用不再信任用戶或管理員添加的CA證書來進(jìn)行安全連接蒿秦,所以按照Charles問題之抓Android手機(jī)應(yīng)用Https包板熊,出現(xiàn)Unknown安裝的CA證書抓取的內(nèi)容依然為unknown,需要按照下面的方式將Charles證書寫入Android手機(jī)的系統(tǒng)證書里
1. 獲取手機(jī)root權(quán)限
這個(gè)是基礎(chǔ)
不同Android手機(jī)旨袒,root方式不同汁针,可以根據(jù)自己的手機(jī)型號(hào)百度root方式,一定要獲取Android手機(jī)的root權(quán)限砚尽,才能接下來的操作
2. 獲取手機(jī)system目錄寫權(quán)限
前提:確定電腦安裝了adb施无,手機(jī)連接電腦
使用到的adb命令和執(zhí)行結(jié)果實(shí)例:
adb root
adb disable-verity (最新的adb 工具包才支持adb disable-verity命令,如果是Linux開發(fā)環(huán)境必孤,則可使用工程編譯結(jié)果目錄out/host/linux-x86/bin下的adb執(zhí)行文件)
adb reboot 重啟設(shè)備 (只要不刷機(jī)猾骡,以上步驟執(zhí)行一次就行)
adb root
adb remount
如果電腦連接多臺(tái)Android手機(jī),需要訪問指定設(shè)備:
adb devices (查詢電腦當(dāng)前連接的所有手機(jī)信息)
db -s 87807845 shell (87807845為某臺(tái)手機(jī)的序列號(hào)敷搪,通過adb devices查詢獲刃讼搿)
如上紅框所示,remount成功后赡勘,現(xiàn)在可以對(duì)system目錄進(jìn)行讀寫了
這里可能遇到的問題:
-
adb disable-verity如果運(yùn)行報(bào)如下錯(cuò)誤嫂便, 是因?yàn)槭謾C(jī)設(shè)備沒有root導(dǎo)致
-
蘋果電腦無法識(shí)別安卓手機(jī),不能使用adb命令與安卓手機(jī)互傳文件
極可能是因?yàn)椋喊沧渴謾C(jī)沒有打開USB調(diào)試闸与,用數(shù)據(jù)線連接手機(jī)后毙替,選擇傳輸文件報(bào)錯(cuò)
按照如下2張圖操作,點(diǎn)擊【傳輸文件】后践樱,即可使用adb命令與手機(jī)互傳文件
注意:有些手機(jī)可能需要連續(xù)點(diǎn)擊「關(guān)于手機(jī)」中的「版本號(hào)」多次才能開啟「開發(fā)者選項(xiàng)」
- remount后仍提示system目錄沒有寫權(quán)限蔚龙,可以試試重啟手機(jī)
3. 下載Charles證書并重命名
將Android手機(jī)連接Charles后,建議使用騰訊瀏覽器映胁,訪問 chls.pro/ssh 下載后綴是 .pem 的證書木羹,騰訊瀏覽器下載的證書一般在如下目錄可以找到:/sdcard/Android/data/com.tencent.mtt/files
下載證書后,可以拷貝到電腦上解孙,然后執(zhí)行hash命令坑填,具體操作示例和結(jié)果如下:
adb pull /sdcard/Android/data/com.tencent.mtt/files/charles-proxy-ssl-proxying-certificate.pem /Users/hanyuxia/Documents (拷貝到電腦)
cd /Users/hanyuxia/Documents
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem
然后將證書名稱重命名為hash 值 ,其中的每個(gè)證書的命名規(guī)則如下:
<Certificate_Hash>.<Number>
證書重命名后實(shí)例為:6d8363ce.0
文件名是一個(gè)Hash值弛姜,而后綴是一個(gè)數(shù)字(注意:后綴數(shù)字先用0脐瑰,后綴名的數(shù)字是為了防止文件名沖突的,比如如果兩個(gè)證書算出的Hash值是一樣的話廷臼,那么一個(gè)證書的后綴名數(shù)字可以設(shè)置成0苍在,而另一個(gè)證書的后綴名數(shù)字可以設(shè)置成1)
文件名用下面的命令計(jì)算出來:
openssl x509 -subject_hash_old -in <Certificate_File>
4. 將Charles證書寫入手機(jī)系統(tǒng)證書
手機(jī)系統(tǒng)證書目錄: /system/etc/security/cacerts/
- 方法一:使用adb命令拷貝
adb push /Users/hanyuxia/Documents/6d8363ce.0 //system/etc/security/cacerts/
拷貝成功后绝页,可以在手機(jī)目錄 設(shè)置->密碼與安全->系統(tǒng)安全->加密與憑據(jù)->信任的憑據(jù) 的系統(tǒng)標(biāo)簽頁看到剛剛加入的與你的電腦對(duì)應(yīng)的Charles證書,然后將其啟用寂恬,就可以順利抓取https的包了续誉,不同手機(jī)系統(tǒng)證書的路徑可能略有區(qū)別,但是一定在 ~->系統(tǒng)安全->加密與憑據(jù)->信任的憑據(jù)初肉,前面的路徑具體手機(jī)具體看
注意:證書區(qū)分電腦酷鸦,同一臺(tái)手機(jī)連接不同的電腦抓包,都需要在手機(jī)上安裝與之相對(duì)應(yīng)的Charles證書
-
方法二:
使用手機(jī)ES文件瀏覽器將證書移至到/system/etc/security/cacerts -
方法三:
另一個(gè)選擇: RE文件管理器(ES文件瀏覽器可能要收費(fèi))