Android 模拟器无法信任 Charles 代理证书

问题描述 投票:0回答:2

我正在按照 本教程 监控 Android 版本 7 模拟器上的 https 流量。

我发现奇怪的一件事是,我从

chls.pro/ssl
下载的证书与我通过 Charles 代理访问网站时遇到的证书不同。

这是我从

chls.pro/ssl

获得的证书

enter image description here

可以从设置 -> 安全 -> 可信凭据 -> 用户选项卡查看此证书。

这是我通过 Charles 代理访问任何网站时找到的证书:

enter image description here

从图片中可以看到,他们的指纹是不同的。

这使得我的 Android 模拟器在通过 Charles 代理访问网站时无法信任该证书。

enter image description here

为什么证书不一样?

如何在Android模拟器上查看https流量?

我使用的是最新的 Charles 代理,版本为 4.5.6。

================================编辑================== ===============

安全警告是模拟器上的浏览器引起的。

我最初使用“浏览器”版本7.1.2来访问网站。

enter image description here

更换为Chrome后,安全警告不再出现。我可以查看 Chrome 和网站之间的 https 流量。

但是我仍然无法查看Android应用程序和服务器之间的https流量。

这是错误消息:

enter image description here

这是我的

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors> 
            <!-- Trust user added CAs -->
            <certificates src="user" overridePins="true" />
        </trust-anchors> 
    </base-config>
</network-security-config>

================================编辑================== ===============

Android应用程序的apk文件是从google play下载的。

这是我对 apk 文件所做的事情

  1. 使用Apk Extractor获取apk文件。

  2. 使用

    apktool d ${APK_FILE}.apk
    提取文件。

  3. 修改其

    network_security_config.xml
    AndroidManifest.xml

  4. 运行

    apktool b ${APK_FILE}
    将提取的文件恢复为apk文件。

  5. 运行

    apksigner sign -ks my-key.keystore ${APK_FILE}/dist/${APK_FILE}.apk
    对 apk 文件进行签名。

  6. 将apk文件放入Android模拟器并安装。

我不确定上述步骤是否会导致应用程序无法信任 Charles 证书。

这是我修改之前的原版

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">appapi.appname.com</domain>
    </domain-config>
</network-security-config>
android ssl ssl-certificate charles-proxy man-in-the-middle
2个回答
0
投票

为什么证书不一样?

显示的第一个证书是 Charles 的“证书颁发机构”(CA) 证书。它是自签名的(请注意“颁发者”详细信息如何与证书的详细信息相同),并且不适用于特定域。

第二个证书是网站的证书,由 Charles 的 CA 证书颁发并签名,以单个特定域作为其主题(未显示),可用于验证与该特定域的连接。

证书信任的工作方式是您信任一组 CA 证书,每当您收到要验证的证书时,您都会查看谁颁发了该证书,并根据您拥有的 CA 来查看您是否信任它们(在在某些情况下,信任链中有几个步骤,因此您需要逐步执行,直到找到您信任的证书,或者找到根证书并放弃)。

这有道理吗?在实践中,Charles 预先生成了一个您需要信任的 CA,然后它会根据需要为每个需要证书的单独域生成新证书,并使用其 CA 对其进行签名,然后您应该信任这些证书,因为您信任 Charles。

如何在Android模拟器上查看https流量?

显示的证书不是问题的原因,因此很难提供更多详细信息。 Charles 需要一些手动配置。您能否添加有关您所做的事情以及所看到的错误的更多信息?

如果您没有特别与 Charles 结婚,HTTP Toolkit 作为替代方法可能会有所帮助。这是我一直在开发的一个开源工具,因为 Charles 的设置可能会很痛苦。它执行所有相同的操作,但证书设置是完全自动化的,因此您不会遇到此问题。


0
投票

从来不同意被root或许可协议我有警察报告的所有信息几个月来手机损失了2000美元我正在向联邦调查局ifentity盗窃报告 所以 MSNY 联邦罪行 你已经被扔进了我的个人医疗记录,银行账户,你造成了严重的创伤,如果带存储卡的手机支持所有这些根所做的事情,我有一个包,以及试图保存个人信息时的视频,以防止闪存重启被删除,我向 MSDE 报告卡罗尔·库布蒂警长办公室副科特斯网络部门负责人将拿到手机和模拟人生,我将结束这次旅行,你的目标是我从未同意过的任何协议 你和alpache 2.0一样 和巴尔的摩根3一样 和其他300个根一样 不可例外 你有权保护我的孩子和隐私权 我害怕拥有一部电话 警察报告也会被联邦调查局一致调查 我不能请再接受这个,我求你停止瞄准我,我不能再打了

© www.soinside.com 2019 - 2024. All rights reserved.