美文网首页
安卓7.0出现Charles无法抓包 - unknown和证书无

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

作者: hellokitty小丸子 | 来源:发表于2019-09-26 10:59 被阅读0次

    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>
    
    • 在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml,即res/xml/network_security_config.xml:
    <?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,亲测有效,快去试试吧!

    相关文章

      网友评论

          本文标题:安卓7.0出现Charles无法抓包 - unknown和证书无

          本文链接:https://www.haomeiwen.com/subject/jbydyctx.html