【发布时间】:2020-10-18 18:41:16
【问题描述】:
我正在关注this tutorial 以监控 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 流量。
但是我还是看不到安卓应用和服务器之间的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>
==============================编辑================= =================
安卓应用的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文件放到安卓模拟器中并安装。
我不确定上述步骤是否会导致应用无法信任 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