我正在按照 本教程 监控 Android 版本 7 模拟器上的 https 流量。
我发现奇怪的一件事是,我从
chls.pro/ssl
下载的证书与我通过 Charles 代理访问网站时遇到的证书不同。
这是我从
chls.pro/ssl
获得的证书
可以从设置 -> 安全 -> 可信凭据 -> 用户选项卡查看此证书。
这是我通过 Charles 代理访问任何网站时找到的证书:
从图片中可以看到,他们的指纹是不同的。
这使得我的 Android 模拟器在通过 Charles 代理访问网站时无法信任该证书。
为什么证书不一样?
如何在Android模拟器上查看https流量?
我使用的是最新的 Charles 代理,版本为 4.5.6。
================================编辑================== ===============
安全警告是模拟器上的浏览器引起的。
我最初使用“浏览器”版本7.1.2来访问网站。
更换为Chrome后,安全警告不再出现。我可以查看 Chrome 和网站之间的 https 流量。
但是我仍然无法查看Android应用程序和服务器之间的https流量。
这是错误消息:
这是我的
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 文件所做的事情
使用Apk Extractor获取apk文件。
使用
apktool d ${APK_FILE}.apk
提取文件。
修改其
network_security_config.xml
和AndroidManifest.xml
运行
apktool b ${APK_FILE}
将提取的文件恢复为apk文件。
运行
apksigner sign -ks my-key.keystore ${APK_FILE}/dist/${APK_FILE}.apk
对 apk 文件进行签名。
将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>
为什么证书不一样?
显示的第一个证书是 Charles 的“证书颁发机构”(CA) 证书。它是自签名的(请注意“颁发者”详细信息如何与证书的详细信息相同),并且不适用于特定域。
第二个证书是网站的证书,由 Charles 的 CA 证书颁发并签名,以单个特定域作为其主题(未显示),可用于验证与该特定域的连接。
证书信任的工作方式是您信任一组 CA 证书,每当您收到要验证的证书时,您都会查看谁颁发了该证书,并根据您拥有的 CA 来查看您是否信任它们(在在某些情况下,信任链中有几个步骤,因此您需要逐步执行,直到找到您信任的证书,或者找到根证书并放弃)。
这有道理吗?在实践中,Charles 预先生成了一个您需要信任的 CA,然后它会根据需要为每个需要证书的单独域生成新证书,并使用其 CA 对其进行签名,然后您应该信任这些证书,因为您信任 Charles。
如何在Android模拟器上查看https流量?
显示的证书不是问题的原因,因此很难提供更多详细信息。 Charles 需要一些手动配置。您能否添加有关您所做的事情以及所看到的错误的更多信息?
如果您没有特别与 Charles 结婚,HTTP Toolkit 作为替代方法可能会有所帮助。这是我一直在开发的一个开源工具,因为 Charles 的设置可能会很痛苦。它执行所有相同的操作,但证书设置是完全自动化的,因此您不会遇到此问题。
从来不同意被root或许可协议我有警察报告的所有信息几个月来手机损失了2000美元我正在向联邦调查局ifentity盗窃报告 所以 MSNY 联邦罪行 你已经被扔进了我的个人医疗记录,银行账户,你造成了严重的创伤,如果带存储卡的手机支持所有这些根所做的事情,我有一个包,以及试图保存个人信息时的视频,以防止闪存重启被删除,我向 MSDE 报告卡罗尔·库布蒂警长办公室副科特斯网络部门负责人将拿到手机和模拟人生,我将结束这次旅行,你的目标是我从未同意过的任何协议 你和alpache 2.0一样 和巴尔的摩根3一样 和其他300个根一样 不可例外 你有权保护我的孩子和隐私权 我害怕拥有一部电话 警察报告也会被联邦调查局一致调查 我不能请再接受这个,我求你停止瞄准我,我不能再打了