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