当前位置: 首页 > 知识库问答 >
问题:

如何让查尔斯代理与Android 7 牛轧糖一起工作?

上官彬
2023-03-14

Android 7对证书的处理方式进行了一些更改(http://android-developers.blogspot.com/2016/07/changes-to-trusted-certificate.html)不知怎么的,我不能让查尔斯的代理人再工作了。

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

我正在调试模式下运行。但无论如何,我都会得到javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

不用说,我确实从设置安装了pfx证书-

我正在使用okhttp3作为HTTP库。

知道我做错了什么吗?


共有3个答案

巫马炫明
2023-03-14

对我来说,SSL代理在版本构建变体中不起作用。在debug中工作。

施玉宸
2023-03-14

根据OP注释的疑难解答线索,答案是只将代理的CA证书安装为可信证书,而不是其证书私钥。

这个问题是由两个因素引起的:

>

  • 不仅安装MiTM代理的CA证书,还安装其私钥(从而使设备上的VPN应用程序能够解密来自其他应用程序的/MiTM流量)。您不需要设备上MiTM代理的私钥。

    Android牛轧糖在<代码>设置中的行为变化-

    在Nougat之前,设置-

    更复杂的是,设置-

    附言关于网络安全配置,您可能应该将应用配置为在调试模式下也信任“系统”信任锚(调试覆盖部分)。否则,应用程序的调试版本将不起作用,除非连接由 Android 设备上的 CA 证书作为受信任安装的代理进行 MiTM。

  • 颜安宁
    2023-03-14

    解决方案是不要使用.p12,只需使用Chrome(在wifi上配置代理)导航即可 http://charlesproxy.com/getssl 并安装下载的.pem文件。

    我在运行Android 7.0的Nexus 5X上遇到了完全相同的问题。之前从Charles 3.11.5导出了. p12(帮助-

    Android 7.0的总“操作方法”如下所示:

    1. 配置 WiFi 代理(查尔斯如何要求它)。连接它。
    2. 在设备上,使用 Chrome 导航到 http://charlesproxy.com/getssl,接受下载 .pem 的请求,然后按“打开”,它会启动“证书安装程序”应用程序。 使用它来安装证书作为“VPN 和应用程序”。
    3. 将属性 android:networkSecurityConfig=“@xml/network_security_config” 放入

    P.S.检查设备上的日期/时间。这应该是正确的。

     类似资料:
    • 例外 片段点击:- 在活动中, 详细活动清单, 图像加载使用毕加索, 模型类 从活动到片段的数据流, 我尝试过的解决方案 注意:-应用程序崩溃只在NOUGAT 最后,我实现了修复 将targetSdkVersion从25更改为23 更改后,我的应用程序在牛轧糖也不会崩溃。 我所要知道的就是这个合适的解决方案,或者有什么变通办法。 请引导到正确的方式。 提前谢谢。 碎片 选项卡布局 列表视图

    • 我尝试了太多的选项/博客/脚本来安装GooglePlay for Emulator(通过Android Studio运行),但都没有成功。我看到了很多不同的错误 失败[安装失败\u更新不兼容] 评论-为什么在Emulator上安装GooglePlay如此困难,有人能提供与Marshmallow/Noughat一起使用的步骤或GAPP吗。或者为什么谷歌不提供标准步骤来为模拟器安装GApps! 以下是

    • 因此,以下是几年/几个月前可能对我有所帮助的一些类似但过时的答案: 为什么我看不到超文本传输协议或https流量从Chrome浏览器Android上查尔斯代理? 如何让charles proxy使用Android 7 nougat? 我遵循了所有的说明,我可以很好地读取http请求,但不能读取https请求。还是不知道我做错了什么。因为我刚刚遵循了上述指南,所以我没有太多自己的文章可以发表。 我认

    • 我的应用程序在之前的Android版本上运行完美,在实际设备上从4.0测试到6.0.1。工作室仿真牛轧糖7.0和7.1没问题。然而,当我让我的朋友在他运行7.0的设备上测试APK时,这在几秒钟内就发生了: 崩溃通知 我没有访问该设备的权限(他住得很远),并且我无法在网上找到该特定错误的任何相关信息。原因可能是什么?

    • 我正在使用reverfit进行api调用,我从服务器得到了几乎不到30KB大小的JSON响应。当JSON将响应解析为一个复杂对象时,它会抛出这个错误。 如果我尝试将响应存储在对象类中,然后通过LinkedHashMap获取值,我就能够获取数据。但是,这将是一个繁琐的过程。 有谁能帮我弄清楚这里的问题是什么,以及如何找到解决办法吗? 根据我的研究,这种情况只发生在版本>=牛轧糖的android设备上