背景/遇到的问题:(HTTPS第三方窗口无法抓包)


因项目要求,原HTTP链接换成了加密链接HTTPS;导致安卓手机的第三方浏览器/原生嵌套窗口Webveiw无法正常抓包HTTPS的内容;


安卓证书安装为系统证书(模拟器版)_重启

 

问题分析:(请教了大佬)


使用的环境:WINDOWS10、EMUI 11、Charles 4.5.6、APP


排查问题的思路是先从能读到证书的方法来验证;


  1. 在电脑浏览器请求对应的HTTPS链接,查看抓包工具能否正常抓到;如果不能,电脑端证书就有问题,重装下再试试;
  2. 电脑端正常的情况下,在手机上自带浏览器里请求对应的HTTPS链接;查看抓包工具能否正常抓到;如果不能,手机端证书就有问题,重装下再试试;
  3. 如果电脑与手机自带浏览器都能正常抓到,APP的还是抓不到。排查一下Webview窗口是否为同一个;


排查方法:把手机自带浏览器请求的信息与APP请求抓包不到的信息对比一下;


安卓证书安装为系统证书(模拟器版)_抓包工具_02


如果不是同一浏览器,那基本就是因为第三方浏览器Webview(部分)无法读取到用户证书导致的;


百度等找了下不能抓包的原因:


安卓证书安装为系统证书(模拟器版)_抓包_03

 

 到这个时候,基本可以确定无法抓包是因为非本浏览器窗口无法读到用户证书导致的;


网上找到的解决办法:


安卓证书安装为系统证书(模拟器版)_HTTPS_04

 

 解决思路:通过模拟器ROOT后安装证书到系统证书的方法来解决读不到的问题;


 


解决方法:


环境:Windows10、安卓模拟器(打开root)、adb、保存的pem证书;


操作步骤:


1、打开模拟器,确保已连接


2、打开CMD(接下来基本在CMD里操作了)


3、查看连接状态:adb devices


4、判断是否有ROOT权限:adb root


5、重启:adb reboot (未重启的可手动重启模拟器)


6、将/system部分置于可写入的模式:adb remount


7、查看pem证书信息:openssl x509 -subject_hash_old -in 123.pem (123.pem指具体文件的路径和名称)


8、把结果里的名称复制出来,再复制一份pem文件;更名为:hash结果里的名称.0 (如:ab6544ad.0)


9、安装证书:adb push ab6544ad.0 /system/etc/security/cacerts/ (就是把文件复制到对应的证书目录下)


10、进入模拟器里查看系统证书



部分操作截图:


查看模拟器连接状态


安卓证书安装为系统证书(模拟器版)_抓包_05

 

 查看root状态


安卓证书安装为系统证书(模拟器版)_HTTPS_06


将/system部分置于可写入的模式



安卓证书安装为系统证书(模拟器版)_重启_07


查看pem证书信息



安卓证书安装为系统证书(模拟器版)_抓包工具_08


更改文件名称(例)

安卓证书安装为系统证书(模拟器版)_抓包_09


传入模拟器系统文件夹



安卓证书安装为系统证书(模拟器版)_重启_10


查看模拟器系统证书结果


安卓证书安装为系统证书(模拟器版)_抓包工具_11


完成这些基本就可以看到之前APP请求不能看HTTPS传参的了;