Android 7.0(荣耀8) charles不能抓https包问题解决

转:https://www.jianshu.com/p/a222a420ff35

1. 问题描述

换了了一个荣耀8测试机,按照charles的老套路去安装证书,准备抓https的包,发现死活不成功,charles报错如下:

You may need to configure your browser or application to trust the Charles Root Certificate.
2. 问题解决

查资料发现,这是Android 7.0的问题,在7.0上,用户自己安装的证书是不被app应用信任的(安全性考虑,防止charles这种做接口逆向,监听数据)

解决办法如下(只能抓你自己开发的app的https的包):

1. 在你自己的app下,xml目录下新建一个文件:res/xml/network_security_config.xml ,配置在debug模式下信任用户证书,内容如下:
<network-security-config> 
  <debug-overrides> 
    <trust-anchors> 
      <!-- Trust user added CAs while debuggable only -->
      <certificates src="user" /> 
    </trust-anchors> 
  </debug-overrides> 
</network-security-config>
2. 在AndroidManifest中使用它:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application  android:networkSecurityConfig="@xml/network_security_config" ... >
        ...
    </application>
</manifest>

好了,这样就ok了

如果觉得本文帮到了你,请留言、点赞,和关注,期待和你一起进步!

参考资料

http://blog.csdn.net/yinyignfenlei/article/details/72782898

https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/




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

转:https://blog.csdn.net/ShadowySpirits/article/details/79756274

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

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

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

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

openssl x509 -subject_hash_old -in <Certificate_File>

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

操作步骤:

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

计算 Hash 值

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

安装好的CA证书


方式3:

1,一台root的手机 
2,导出burp证书,push到sd安装—这一步就不介绍了,然后 
cp /data/misc/user/0/cacerts-added/* /system/etc/security/cacerts/ 
此时你已经可以抓到非强证书校验的报文了



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值