4

我一直在使用 Charles 拦截请求和响应,但是当我尝试针对 Android Oreo 的 google 像素时,它一直给我握手异常。我知道他们的某些更改已经在 Naught 关于网络安全方面进行了。任何形式的帮助将不胜感激。

4

2 回答 2

17

如果您在 Android 中使用 Charles on Device 目标获得高于 7.0 时遇到问题,请按照Charles Proxy 文档中详细说明的步骤操作

  1. 添加以下行

    android:networkSecurityConfig="@xml/network_security_config"> 
    

    到应用程序标签中的清单文件。

  2. 使用名为network_security_config的文件创建一个 xml 文件夹,并在其中粘贴以下代码。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

注意:如果您只有单一构建风格,请不要将上述内容提交到您的分支。

对于具有不同构建风格(调试/发布/其他)的人,也可以将其用于调试版本和提交。

于 2018-04-21T10:20:08.817 回答
0

另一个答案也是正确的,但是根据文档base-config根本不需要 xml 标记。虽然没有明确提及,但他们的示例不包括该标签。

这是文档站点上“配置 CA 以进行调试”的代码:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/debug_cas"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

我们可以只允许用户安装证书,而不是指定特定的证书,就像在另一个答案中一样:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>
于 2020-11-06T12:08:10.207 回答