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

相关背景

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

解决方案

  1. 确保已正确安装证书, Charles已配置好

  2. 使用apktool对apk进行反编译

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

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

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

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

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

参考

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

欢迎留言交流~