Android Nougat上的CharlesProxy SSL握手失败

时间:2017-07-10 21:43:13

标签: certificate ssl-certificate charles-proxy android-7.1-nougat

我正在尝试代理运行Android 7.1.2的手机,查看通过我正在使用的应用程序制作的获取和帖子。使用CharlesProxy 4.1.4,iOS设备很容易实现。但是,该应用在Android上的功能不同,我们想知道如何。

我已将设备配置为通过输入IP和端口连接到Charles,然后导航到chls.pro/ssl以获取CA证书。即使在chrome上,证书也可以无故障地下载和安装。我可以看到来自Charles的电话,但我看不到电话的任何内容。相反,它列为<unknown>,表示SSLHandshake: Received fatal alert: certificate_unknown

我还有另一种方式可以信任这个证书吗?或者是否有其他方法可以成功通过Android使用SSL?同样,我的所有设置都适用于iOS设备,因此我不需要该操作系统的示例。

由于

1 个答案:

答案 0 :(得分:4)

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

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

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

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