Android 14 (UpsideDownCake) 在 /system/etc/security/cacert 中看不到安装的证书

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

对于我们的 Android 模拟器自动化测试平台,我们能够使用经过尝试和测试的命令将 Proxyman 证书推送到

/system/etc/security/cacerts

  1. 使用

    -writable-system
    标志启动模拟器:
    emulator -avd emulator_name -writable-system

  2. 准备Proxyman证书:

    • openssl x509 -inform PEM -subject_hash_old -in proxyman-ssl-proxying-certificate.pem | head -1
      - 它返回证书的哈希值,例如。 30eb732c

    • 将其保存到文件中:

      cat proxyman-ssl-proxying-certificate.pem > 30eb732c.0

    • openssl x509 -inform PEM -text -in proxyman-ssl-proxying-certificate.pem -out /dev/null >> 30eb732c.0

  3. 将创建的

    30eb732c.0
    推送到模拟器:

    • adb root
    • adb remount
    • adb root
    • adb shell avbctl disable-verification
    • adb reboot
    • adb root
    • adb remount
    • adb push 30eb732c.0 /system/etc/security/cacerts
  4. 我可以通过列出带有

    adb shell ls /system/etc/security/cacert
    的所有证书并在列表中看到我的证书来验证该文件是否存在。

有了这些,我们就可以在我们的应用程序的发布版本上看到 Proxyman 中的流量,最高可达 API 33,并且我可以在模拟器设置/安全/加密和凭据/受信任的凭据中看到安装在系统分区上的证书。

与Android模拟器UpsideDownCake相同的步骤,我可以看到证书文件确实在

/system/etc/security/cacert
中,但UI上没有显示它,并且Proxyman也无法捕获流量(得到
SSL Handshake Failed
)。

安装cert的方法已经被告知很多了:

我觉得我可能在这里遗漏了一些东西,但也想知道 API 33 和 UpsideDownCake 模拟器之间有什么区别。有人在 Android 14 (UpsideDownCake) 模拟器上的

/system/etc/security/cacert
中成功安装了证书吗?

java android kotlin android-emulator
2个回答
0
投票

Android 14 首先查看此位置:

/apex/com.android.conscrypt/cacerts

0
投票

Android 14 现在从 Conscrypt 库的 APEX 文件系统中读取 CA 证书,地址为

/apex/com.android.conscrypt/cacerts

对于这样的用例来说,这是一个尴尬的问题,因为该路径不可能直接修改或重新挂载。您可以尝试所有您喜欢的方法,但是 APEX 模块使用与文件系统其余部分不同的机制加载,一般来说,如果您通过 ADB shell 进行简单的更改,设备上的应用程序将看不到它们 - 它们使用隔离的安装命名空间,所以他们将继续独立使用原来的一套安装座。

我在这里做了一些挖掘,并找到了一些可行的解决方案:您可以将另一个目录绑定到此位置,然后使用

nsenter
将该安装单独复制到每个应用程序的安装命名空间中,并复制到 Zygote 进程中(它会启动未来的应用程序,以便新启动的应用程序默认复制它)。

这就是它的本质。完整的步骤和背景上下文非常复杂,但我已经记录了它并构建了一个完整的脚本来自动执行此操作:https://httptoolkit.com/blog/android-14-install-system-ca-certificate/

您可以在此处查看 HTTP Toolkit 中自动化该过程的结果更改:https://github.com/httptoolkit/httptoolkit-server/commit/965fd8d9b287af0e4b305d828d5e8e1aa52dce36

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