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

Posted

技术标签:

【中文标题】Charles SSL Proxy 适用于 chrome 但不适用于应用程序【英文标题】:Charles SSL Proxy works for chrome but not for the apps 【发布时间】:2016-10-05 08:21:50 【问题描述】:

我使用的是运行 android 7 的 Nexus 5X 设备。我未能按照 Charles Proxy 文档中的最新说明设置代理。我安装了证书,但是扩展了 wifi 设置或 nugat。我可以将 charles 设置为证书,但这不会让我连接到那个 wifi(身份验证问题)。因此,我将其保留为“不检查正确性”。我什至不知道这是否相关。

问题是当我尝试嗅探我的应用程序 https 调用时,我看到 SSLHandshake: Received fatal alert: certificate_unknown 但是,如果我在同一设备上使用 chrome 运行 Web 客户端 - 我可以读取对同一 api 的调用。

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

我在这里问的原因是因为也许我必须在我的改造 api 设置中添加一些不安全的客户端 - 希望不会。

【问题讨论】:

我遇到了同样的问题 - 您找到解决方案了吗? 【参考方案1】:

为了让 CharlesProxy 在 Android 7 中工作,你需要如何配置你的 apk。

安卓

从 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/

【讨论】:

进行上述更改后,可能会出现“networksecurityconfig”没有属性的错误,这将通过将您的compileSdkVersion设置为24或更高并将您的buildToolsVersion设置为24.0.0或更高。 我无法更改 apk 源代码。那么有什么解决办法吗?【参考方案2】:

在Charles中,选择Help -> SSL Proxying -> Install Charles Root Certificates in IOS Simulators,关闭ios Simulator并重启模拟器。它现在应该可以工作了。

【讨论】:

以上是关于Charles SSL Proxy 适用于 chrome 但不适用于应用程序的主要内容,如果未能解决你的问题,请参考以下文章

charles 之 ssl proxy 设置(https抓包)

Charles Proxy SSL:“未为此主机启用 SSL 代理”[关闭]

如果启用SSL代理,为什么https请求在Charles Proxy上失败

使用 HTTP 查询时的 Charles Proxy 和 Windows Phone(需要 SSL 证书)

如何在 Windows 上使用 Charles Web Proxy 和最新的 Android Emulator 配置 SSL 证书?

charles抓包出现乱码 SSL Proxying not enabled for this host:enable in Proxy Setting,SSL locations