首页 / Other / Android 7.0以上版本HTTPS抓包解决方法

Android 7.0以上版本HTTPS抓包解决方法

摘要:Android 7.0以上版本HTTPS抓包解决方法 Android 自 7.0 版本开始,系统不再信任用户 CA 证书(应用 targetSdkVersion >= 24 时生效,如果 targetSdkVersion < 2...

Android 7.0以上版本HTTPS抓包解决方法

Android 自 7.0 版本开始,系统不再信任用户 CA 证书(应用 targetSdkVersion >= 24 时生效,如果 targetSdkVersion < 24 即使系统是 7.0+ 依然会信任),也就是说即使安装了用户 CA 证书,应用的HTTPS包依然抓不了,会像下面这样,那么我们怎么绕过这种限制呢?

image-20220914134005214

安装 CA 证书到系统目录

对于拥有root权限的设备,这是最佳的解决方案,如果把 CA 证书安装到系统 CA 证书目录下,那这个假 CA 证书就是真正的洗白了,不是真的也是真的了;

由于系统 CA 证书格式都是特殊的 .0 格式,我们必须将抓包工具内置的 CA 证书导出为这种格式,这里我们以Charles为例;

安装OpenSSL

下载地址:http://slproweb.com/products/Win32OpenSSL.html

image-20220914134836287

这里下载Win64位的OpenSSL轻量版即可,大小5M,EXE或MSI安装包皆可;

安装过程全部默认即可,这里不详细说明了;

我们需要在命令行中使用openssl命令,所以手动设置一下环境变量,将OpenSSL安装目录下的bin目录这个路径添加到PATH;

image-20220914135251446

image-20220914135348256

之后在CMD命令行中输入openssl,出现如下这样表示安装成功了;

image-20220914135605519

从Charles中导出CA证书

image-20220914135908966

我这里以导出Base64格式的证书为例;

image-20220914140335964

image-20220914140644500

然后在命令行输入以下命令,D:\Charles.pem为导出的证书文件路径;

openssl x509 -inform PEM -subject_hash_old -in D:\Charles.pem

image-20220914141007432

之后可以得到证书的哈希值b18d9bf1,将原来的pem文件名修改为b18d9bf1.0,然后拷贝到Android设备中,我这里以雷电模拟器为例;

image-20220914141409636

直接拖拽将文件传到模拟器中;

image-20220914141716279

使用Re管理器将文件拷贝至/system/etc/security/cacerts目录下,并设置权限0644,然后重启设备;

image-20220914142030340

可以看到信任的系统凭据已经有Charles的证书了;

image-20220914142936774

抓包测试

打开Charles简单设置一下;

image-20220914143442063

image-20220914143539997

image-20220914143053093

image-20220914143149253

image-20220914143334397

image-20220914143355860

手机设置代理到Charles,我这里就不演示了,我这里是使用的一款叫Proxifier的软件直接将模拟器的流量重定向到抓包软件,目的都是一样;

然后用浏览器打开一个https站点测试了一下,没有报证书错误;

image-20220914144054044

image-20220914144244766打开一个软件测试一下,也没有提示网络错误;

image-20220914144333245

版权声明:《Android 7.0以上版本HTTPS抓包解决方法》为作者阿凡原创文章,转载请注明原文地址。
最后编辑:2022-9-14
分享到:
发表评论

用心评论~