在 Android 台设备上拦截应用 https 流量

Intercepting app https traffic on Android device

我想查看来自我的应用的 https 流量。

我在电脑上安装了fiddler并将证书下载到设备上,可以从浏览器查看https流量。

但是当我尝试我的应用程序时 - 我得到 javax.net.ssl.sslhandshakeexception java.secirity.cert.CertPathVelidatorException 未找到证书路径的信任锚。

我相信 fiddler 设置是正确的,因为我可以从我的 phone 浏览器查看 https 流量。

有什么帮助吗?

或其他相同的方式。

我从桌面上的 运行 java 应用程序知道 - 你可以指定代理 ip +端口到 java 虚拟机 - 也许需要在设备上做类似的事情.

我能够为 http 流量设置模拟器 - 但 https 不起作用 - 我还在模拟器上安装了 fiddler 证书。使用 Android 29.

将证书安装到 运行 Android 6 或更高版本设备上的系统信任库中需要 root 权限才能在所有应用程序中正常工作。

如果没有 root 权限,您只能将证书安装到 "user" 信任库中,targetSdkVersion 设置为 23 或更高的应用程序会忽略该证书。

幸运的是,在您的情况下,我们正在谈论您自己的应用程序,它打开了一扇门,可以在没有 root 权限的情况下使用 Fiddler 拦截流量:

在您的应用中,您必须提供 Network Security configuration file

在那个文件中你有两个选择:

明确信任用户信任库:

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

包括您的 Fiddler 根 CA 证书

您可以将 Fiddler 根 CA 证书包含到您的应用程序中,并定义它应该在调试版本中受信任(将 Fiddler 根 CA 证书文件添加为原始资源 debug_fiddler_root):

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