抓包 Android App HTTPS Charles Client SSL handshake failed 问题解决.

相关背景

使用Charles抓包时, 有些APP使用https的可以解开但有些就报这个错,放谷歌查了一些资料,放上解决方案,有类似问题的可以参考一下。

解决方案

  1. 确保已正确安装证书, Charles已配置好
  1. 使用apktool对apk进行反编译

    1
    apktool d example.apk
  2. 修改AndroidManifest.xml配置文件, 在application节点添加一行代码:

    1
    android:networkSecurityConfig="@xml/network_security_config"
  3. 新增res/xml/network_security_config.xml配置文件, 内容为下(替换example.com为你要对此APP进行抓包的域名):

    1
    2
    3
    4
    5
    6
    7
    8
    <network-security-config>
    <domain-config>
    <domain includeSubdomains="true">example.com</domain>
    <trust-anchors>
    <certificates src="user"/>
    </trust-anchors>
    </domain-config>
    </network-security-config>
  4. 使用apktool进行编译

    1
    apktool b example
  5. 使用ApkSign对第4步编译后的apk进行签名

    1
    java -jar signapk.jar certificate.pem key.pk8 example.apk example.sign.apk
  6. 安装第5步的apk进行抓包吧~

参考

  1. CSDN MrgcXia的博客 Charles Android 抓包失败SSLHandshake: Received fatal alert: certificate_unknown
  2. CharlesProxy SSL Certificates

欢迎留言交流~