Charles證書(shū)安裝為安卓系統(tǒng)證書(shū)

0.前言

用charles對(duì)手機(jī)app進(jìn)行抓包時(shí),有些app在使用了charles代理的時(shí)候會(huì)無(wú)法連接網(wǎng)絡(luò)的情況,即便已經(jīng)將charles證書(shū)安裝到手機(jī)用戶(hù)證書(shū)了也不行,這個(gè)時(shí)候一般考慮兩種情況:

1.證書(shū)雙向驗(yàn)證。詳情可以參考:http://www.itdecent.cn/p/22b56d977825

2.app僅信任系統(tǒng)證書(shū)。

關(guān)于如何區(qū)分這兩種情況,我并未在網(wǎng)上找到明確的答案,如果有人對(duì)這方面了解的話(huà)求給小弟指條明路,感激不盡。

本文要解決的是第2種情況,出現(xiàn)這種情況的話(huà)直接把charles證書(shū)安裝成系統(tǒng)證書(shū)就行了。

1.下載charles證書(shū)

打開(kāi)charles,點(diǎn)擊Help > SSL Proxying > Save Charles Root Certificate...下載證書(shū)到本地

這里有個(gè)坑,選擇下載目錄后,需要在文件夾名后面加上"\xxx"才會(huì)把證書(shū)下載到該目錄下的xxx.pem文件,否則的話(huà)證書(shū)會(huì)下載到上一級(jí)目錄,而證書(shū)名就是最后一級(jí)目錄的名稱(chēng),比如這里如果沒(méi)有加"\chrales",那證書(shū)就會(huì)下載到D盤(pán)根目錄的work.pem文件。搞的我第一次下的時(shí)候老找不到文件,重新下又說(shuō)文件已存在,蛋疼。

image

2.證書(shū)格式化

系統(tǒng)證書(shū)和用戶(hù)證書(shū)文件有很大不同,我們先進(jìn)入系統(tǒng)證書(shū)目錄看一下系統(tǒng)證書(shū)都長(zhǎng)什么樣,安卓系統(tǒng)證書(shū)都在/system/etc/security/cacerts目錄下,用adb shell進(jìn)入該目錄,查看一下已有的證書(shū)

image

可以看到系統(tǒng)證書(shū)都是.0格式的,而且命名顯然也是大有講究的。

證書(shū)的名稱(chēng)可以用openssl獲取,linux或者mac一般都有openssl,如果沒(méi)有的話(huà)就自己裝一個(gè)吧。使用以下命令就可以計(jì)算出證書(shū)的名字:
openssl x509 -inform PEM -subject_hash_old -in xxxx.pem | head -1

1638433493(1).jpg

得到文件名之后把證書(shū)重命名以下就可以了

mv charles.pem e03d39e3.0

3.將證書(shū)放到安卓系統(tǒng)證書(shū)目錄

這里需要一部擁有root權(quán)限的安卓設(shè)備,建議使用夜神模擬器,直接下載最新版,默認(rèn)有root權(quán)限,并且夜神模擬器自帶有adb,方便下面的步驟。

利用夜神模擬器的文件傳輸功能將證書(shū)傳到安卓模擬器,需要把證書(shū)先放到電腦夜神模擬器共享目錄,然后把證書(shū)拖動(dòng)到夜神模擬器窗口就完成傳輸了,文件會(huì)傳到模擬器的共享目錄。


1638433943.png

然后打開(kāi)cmd,進(jìn)入夜神模擬器adb目錄,這個(gè)要看個(gè)人的安裝目錄,我的電腦是D:\Program Files\Nox\bin

然后在cmd中依次輸入以下命令就行了

進(jìn)入shell
adb shell
獲取超級(jí)用戶(hù)權(quán)限
su
修改system目錄讀寫(xiě)權(quán)限
mount -o remount,rw /system
將安卓共享目錄中的證書(shū)文件復(fù)制到系統(tǒng)證書(shū)目錄中去
cp /sdcard/Pictures/e03d39e3.0 /system/etc/security/cacerts/
開(kāi)啟證書(shū)權(quán)限
chmod 644 /system/etc/security/cacerts/e03d39e3.0

1638434473(1).jpg

4.設(shè)置charles

Charles默認(rèn)不開(kāi)啟https抓包,所以我們需要進(jìn)行以下設(shè)置
首先將Charles證書(shū)安裝到電腦
點(diǎn)擊Help > SSL Proxying > Install Charles Root Certificate,在彈出窗口中點(diǎn)擊“安裝證書(shū)”,然后選擇安裝到本地計(jì)算機(jī),點(diǎn)擊下一頁(yè),選擇將所有證書(shū)都放入下列存儲(chǔ),選擇受信任的根證書(shū)頒發(fā)機(jī)構(gòu),確定。

第二步開(kāi)啟https代理
點(diǎn)擊Proxy > SSL Proxying Setting,勾選Enable SSL Proxying,添加代理域名/端口


1638438695(1).jpg

可以直接兩個(gè)通配符代理所有https請(qǐng)求


image.png

經(jīng)過(guò)這兩步操作就可以開(kāi)始抓包https請(qǐng)求了

5.設(shè)置設(shè)備代理

安卓模擬器中點(diǎn)擊設(shè)置打開(kāi)wifi,長(zhǎng)按wifi修改網(wǎng)絡(luò)


1638434657(1).jpg

填入charles代理地址后保存即可,可以在Charles中點(diǎn)擊Help > SSL Proxying > Install Charlse Root Cetificate on a mobile device or remote browser看到ip地址和端口


image.png

全部流程走完,可以愉快的抓包了,可以用某靈魂軟件去試一下,好像舊版有些是ssl pinning的,但我在模擬器安裝的是3.98.0版本,用這個(gè)方法就可以抓包了。

歡迎技術(shù)交流,互相學(xué)習(xí)一起進(jìn)步!

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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