安卓7.0以上手機寫入安全證書

谷歌在安卓7.0修改了安全策略,用戶添加的CA證書不能再用於安全鏈接,對於https傳輸的數據就抓取不到了,會顯示 <unknown>
個人解決方法是將charles的CA證書安裝進系統信任的證書目錄下,這樣在開啓charles代理的時候,系統就會認爲CA證書安全,從而能夠獲取https數據。
 
準備工做:
一臺已root過的手機,我用的是小米5,開啓開發者選項鍊接電腦。
下載charles證書,電腦端瀏覽器輸入chls.pro/ssl便可下載,若是未下載也能夠在charles>>help>>SSL Proxying>>Save Charles Root Certificate保存證書到本地文件夾
 
具體步驟:
1.重命名證書
安卓系統的安全證書在   /system/etc/security/cacerts/目錄下,進入adb shell,打開目錄就能看到這些證書文件,文件名是Hash值加數字後綴。後綴名的數字是爲了防止文件名衝突的,好比若是兩個證書算出的Hash值是同樣的話,那麼一個證書的後綴名數字能夠設置成0,而另外一個證書的後綴名數字能夠設置成1
 
用 「openssl x509 -subject_hash_old -in 證書名加後綴」計算出hash值,並將後綴設爲0
修改後的文件爲<hash>.0
 
2.將證書傳到系統證書目錄下
首先將文件<hash>.0 push到/sdcard/Download目錄下(cmd 要進入文件目錄下操做)
adb push <hash>.0 /sdcard/Download
 
而後複製到/system/etc/security/cacerts/目錄下
adb shell
su
cp /sdcard/Download/<hash>.0 /system/etc/security/cacerts/
而後修改權限
chmod 644 /system/etc/security/cacerts/<hash>.0
 
若是出現 //<hash>.0:Read-only file system這個警告,這是由於system文件爲只讀,須要將其掛載爲可讀寫。
通常的解決方法是
mount -o rw,remount /system
修改system讀寫權限,而後再進行復制操做
 
若是修改了以後仍是提示Read-only file system,還有方法
adb root
adb disable-verity
adb reboot #手機會重啓,不用關閉cmd窗口,手機可能須要拔掉數據寫從新鏈接
adb root
adb shell 
mount -o rw,remount /system    #再次進行修改
 
而後就能夠進行復制操做了。(我是遇到了這種狀況,這個方法可行)
複製完以後輸入reboot重啓
 
3.測試
重啓以後,小米手機打開設置-更多設置-系統安全-信任的憑據中能夠看到安裝的證書

 

 

 

 

而後經過設置charles代理就能夠查看到https的數據了。
 
總結:
在抓取手機app數據的時候遇到了不少問題,查看了不少的博客資料,在此向他們提出感謝
 
我抓取的是所在公司開發的app數據,爬蟲僅僅做爲測試而已。手機經常使用app的數據通常都是通過了加密,一些涉及我的隱私的數據爬取是違法的,所見即所得,不然即違法。
但願個人這篇文章能幫到你們,有任何意見還請不吝賜教。
相關文章
相關標籤/搜索