使用Charles抓高版本Android包的ssl证书问题
Android7以后,Android不信任用户安装的证书,所以抓https时无法解码请求,对于第三方应用,需要将证书添加为系统证书,网上解决方法较多,比如使用安卓模拟器(兼容性差,很多应用闪退),使用xposed框架等,这里使用Android手机添加证书。
ps: 需要手机有root权限,以下操作以Redmi为准,其他品牌手机操作可能有差别。
导出证书(以Charles为例)
help --> SSL Proxying --> Save Charles Root Certificate...
Android 证书存储格式
证书路径::/system/etc/security/cacerts
文件命名格式(如果计算出来的hash值已经存在则编号依次+1):<hash>.%d
将导出的证书计算hash值
需要安装openssl,Windows11默认安装openssl。
根据导出格式2选1。
1 | openssl x509 -inform DER -subject_hash_old -in <filename>.cer # .cer格式证书 |
上图输出的hash为0cc1f4c0
因此将.pem证书重命名为0cc1f4c0.0
导入到手机
使用任何传输工具(比如微信、QQ等)将证书文件传输到手机。
到手机系统设置 > 密码与安全 > 系统安全 > 更多安全设置 > 加密与凭据 > 安装证书 > CA证书。
选择在手机根目录的证书文件安装。
使用Magisk模块提高权限
在Magisk中安装Move Certificates模块(直接下载压缩包安装),重启手机即可使用Charles抓取手机https包。