Android 7.0 之后抓包 unknown 和证书无效的解决方案(无需改代码)

背景

使用抓包软件(以 Charles 为例)抓取APP的 https 请求时,Android和Charles都正确安装了证书却出现抓包失败,报错:

Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)
抓包失败

原因

Android7.0 之后默认不信任用户添加到系统的CA证书:

To provide a more consistent and more secure experience across the Android ecosystem, beginning with Android Nougat, compatible devices trust only the standardized system CAs maintained in AOSP.(文档链接

也就是说对基于 SDK24 及以上的APP来说,即使你在手机上安装了抓包工具的证书也无法抓取 https 请求

 

解决方案

一、官方解决方案(需修改代码)

二、将抓包软件的证书安装成系统证书(需ROOT)

系统证书目录:/system/etc/security/cacerts/

其中的每个证书的命名规则如下:
<Certificate_Hash>.<Number>
文件名是一个Hash值,而后缀是一个数字。

文件名可以用下面的命令计算出来:

openssl x509 -subject_hash_old -in <Certificate_File>

后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1
 

操作步骤:

将抓包软件的证书用上述命令计算出 Hash 值,将其改名并复制到系统证书目录

计算 Hash 值

此时你应该可以在 设置->安全->加密与凭据->信任的凭据 的系统标签页看到你新加入的证书,将其启用即可顺利抓包

安装好的CA证书

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是在安卓7.0以上版本上使用Charles进行抓包的步骤[^1]: 1. 在Windows上安装Charles:首先,您需要在Windows上安装Charles。您可以从Charles官方网站下载并安装Charles。 2. 配置Charles的HTTPS抓包功能:在Charles中,您需要配置HTTPS抓包功能,以便能够捕获和查看HTTPS请求和响应。以下是配置HTTPS抓包功能的步骤: - 打开Charles并导航到“Proxy”菜单,然后选择“SSL Proxying Settings”。 - 在“SSL Proxying”选项卡中,单击“Add”按钮。 - 在“Location”字段中,输入要抓取的域名或URL的模式。例如,如果您想抓取所有的HTTPS请求和响应,可以输入“*”。 - 单击“OK”保存设置。 3. 安装Charles证书:为了能够捕获和解密HTTPS流量,您需要在安卓设备上安装Charles证书。以下是安装Charles证书的步骤: - 在安卓设备上打开浏览器,并访问http://chls.pro/ssl。 - 下载并安装Charles证书。 - 在安卓设备的设置中,导航到“安全性和隐私”或“安全”选项。 - 选择“凭据存储”或“受信任的凭据”。 - 选择“安装从存储设备安装的凭据”。 - 选择下载的Charles证书文件并安装。 4. 配置安卓设备的代理:为了将安卓设备的流量导向Charles,您需要配置设备的代理设置。以下是配置代理设置的步骤: - 在安卓设备的设置中,导航到“Wi-Fi”或“网络和互联网”选项。 - 长按您当前连接的Wi-Fi网络,并选择“修网络”或“网络设置”。 - 在高级选项中,选择“代理”。 - 选择“手动”代理设置。 - 输入您计算机的IP地址和Charles的代理端口(默认为8888)。 - 保存设置并重新连接Wi-Fi网络。 5. 使用Charles进行抓包:现在,您已经完成了所有必要的设置,可以开始使用Charles进行抓包了。以下是使用Charles进行抓包的步骤: - 在Windows上打开Charles,并确保代理服务器正在运行。 - 在安卓设备上打开您想要抓包的应用程序。 - 在Charles中,您应该能够看到安卓设备的流量,并可以查看请求和响应的详细信息。 请注意,使用Charles进行抓包可能涉及到违反隐私和安全规定的行为。请确保您在合法和合适的情况下使用Charles进行抓包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值