首页 / 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包依然抓不了,会像下面这样,那么我们怎么绕过这种限制呢?

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

安装 CA 证书到系统目录

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

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

安装OpenSSL

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

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

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

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

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

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

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

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

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

从Charles中导出CA证书

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

抓包测试

打开Charles简单设置一下;

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

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

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

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

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

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

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

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

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

Android 7.0以上版本HTTPS抓包解决方法打开一个软件测试一下,也没有提示网络错误;

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

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

用心评论~