问题分析:(请教了大佬)
使用的环境:WINDOWS10、EMUI 11、Charles 4.5.6、APP 排查问题的思路是先从能读到证书的方法来验证;- 在电脑浏览器请求对应的HTTPS链接,查看抓包工具能否正常抓到;如果不能,电脑端证书就有问题,重装下再试试;
- 电脑端正常的情况下,在手机上自带浏览器里请求对应的HTTPS链接;查看抓包工具能否正常抓到;如果不能,手机端证书就有问题,重装下再试试;
- 如果电脑与手机自带浏览器都能正常抓到,APP的还是抓不到。排查一下Webview窗口是否为同一个;
到这个时候,基本可以确定无法抓包是因为非本浏览器窗口无法读到用户证书导致的;
网上找到的解决办法:
解决思路:通过模拟器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、进入模拟器里查看系统证书部分操作截图: 查看模拟器连接状态
查看root状态
将/system部分置于可写入的模式 查看pem证书信息 更改文件名称(例) 传入模拟器系统文件夹 查看模拟器系统证书结果 完成这些基本就可以看到之前APP请求不能看HTTPS传参的了;