Android Nougat上的CharlesProxy SSL握手失败

twa*_*rus 4 certificate ssl-certificate charles-proxy android-7.1-nougat

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

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

我实际上可以信任该证书吗?还是有另一种方法可以成功允许Android使用SSL?同样,我的所有设置都可以在iOS设备上正常运行,因此我不需要该操作系统的示例。

谢谢

小智 11

从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> 
Run Code Online (Sandbox Code Playgroud)

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

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config" ... >
        ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

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