安卓7.0出现Charles无法抓包 - unknown和证书无

2019-09-26  本文已影响0人  hellokitty小丸子

Android使用Charles抓取Https请求的报文时,Android和Charles都正确安装了证书之后出现抓包失败,报错SSLHandshake: Received fatal alert: unknown_ca,如下图所示:


1抓包失败.jpg

原因:

安卓7之后调整了安全策略会导致部分手机抓包失败,请参考此链接:https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html
文中提到默认情况下,针对API Level 24及更高版本的应用程序不再信任用户或管理员添加的CA用于安全连接。意思就是就算你在手机上安装了受信任的证书也是没卵用的。

解决办法 :

前提你的手机上已经正确安装了Charles证书:

  1. 在想抓包的app项目,AndroidManifest.xml文件中添加如下配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                ... >
...
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config>
        <domain includeSubdomains="true">你要抓取的域名</domain>
        <trust-anchors>
        <certificates src="user"/>//信任用户自己安装的证书
        </trust-anchors>
    </domain-config>
</network-security-config>

OK,亲测有效,快去试试吧!

上一篇下一篇

猜你喜欢

热点阅读