android – Charles SSL Proxy适用于chrome但不适用于应用程序

我正在使用运行
Android 7的Nexus 5X设备.我无法使用Charles Proxy文档中的最新说明设置代理.我安装了证书,但扩展了wifi设置或nugat.我可以将charles设置为证书,但这不会让我连接到该wifi(身份验证问题).所以我把它留作“不检查正确性”.我甚至不知道这是否相关.

问题是,当我试图嗅探我的应用程序https调用时,我看到SSLHandshake:收到致命警报:certificate_unknown
但是,如果我在同一设备上使用chrome运行Web客户端 – 我可以读取相同api的调用.

底线是它适用于浏览器,但不适用于我的应用程序.我也检查了其他应用程序.相同的输出.

我在这里问的原因是因为我可能需要在我的改装api设置中添加一些不安全的客户端 – 希望不是.

最佳答案 以下是如何配置apk以使CharlesProxy在Android 7中运行的方法.

Android的

从Android N开始,您需要为您的应用添加配置,以使其信任Charles SSL Proxying生成的SSL证书.这意味着您只能对您控制的应用程序使用SSL代理.

要将您的应用配置为信任Charles,您需要向应用添加网络安全配置文件.此文件可以覆盖系统默认值,使您的应用程序可以信任用户安装的CA证书(例如Charles Root证书).您可以指定这仅适用于应用程序的调试版本,以便生产版本使用默认信任配置文件.

将文件res / xml / network_security_config.xml添加到您的应用程序:

<network-security-config> 
  <debug-overrides> 
    <trust-anchors> 
      <!-- Trust user added CAs while debuggable only -->
      <certificates src="user" /> 
    </trust-anchors> 
  </debug-overrides> 
</network-security-config>

然后在应用的清单中添加对此文件的引用,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <applicationandroid:networkSecurityConfig="@xml/network_security_config" ... >
        ...
    </application>
</manifest>

在这里你可以找到更多细节:

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

点赞