【问题标题】:Intercepting app https traffic on Android device在 Android 设备上拦截应用程序 https 流量
【发布时间】:2020-04-11 16:19:17
【问题描述】:

我想查看我的应用程序的 https 流量。

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

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

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

有什么帮助吗?

或其他方式做同样的事情。

我知道在桌面上运行 java 应用程序 - 您可以指定代理 ip+port 到 java vm - 可能需要在设备上执行类似的操作。

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

【问题讨论】:

  • 我相信javax.sslhandshakeexception 表明您的 SSL 证书无效。尝试重新设置。
  • 我可以通过手机浏览器查看 https 流量 - 所以我认为 fiddler 证书已正确安装,不是吗?

标签: android fiddler


【解决方案1】:

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

如果没有 root 权限,您只能将证书安装到“用户”信任存储区,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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多