在 AndroidTV 上安装证书

Install certificate on AndroidTV

我需要查看我的 androidTV 应用程序发出的后端 https 请求,但是,由于调用是 "https" 调用,我需要安装一个 charles 证书(在我的 androidTV 上)以允许 charles 解密他们。

如果有人知道如何在androidTV上安装证书请告诉我。

非常感谢!

您可以通过编程方式完成。有关详细信息,请参阅 here。不幸的是,我还没有找到在 Android 电视 UI 上执行此操作的选项。

编辑:即使

也失败了
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.settings/com.android.settings.CredentialStorage}; have you declared this activity in your AndroidManifest.xml?

所以我不知道该怎么做...

我写了一篇关于这个的文章:https://zahidrasheed.medium.com/charles-proxy-with-androidtv-fedc863e7039

TLDR; 1- 从 charles app 导出根证书并将其放在 res/raw 下:

Help > SSL Proxying > Save Charles Root Certificate… and save it as charles_ssl_cert.pem file.

2-通过network-security在app中嵌入证书-config.xml

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

3- 通过以下方式再次导出根证书:

Help > SSL Proxying > Export Charles Certificate and Private Key

现在与想要测试该应用程序的用户共享 .p12 文件。需要:

Proxy > SSL Proxying Settings > Root Certificate > Import P12 (Enter the password you used above).

您可以通过 ADB 在 Android 模拟器中安装 SSL 证书,前提是您使用的模拟器映像没有 Google Play 服务。这将允许您对模拟器进行 root 并将证书推送到 /system 中的 cacerts 目录。这意味着您可以在 AndroidTV 上安装 SSL 证书,即使设置中没有 UI 可用。

要在模拟器中安装您的证书,请按照以下步骤操作:

  • 获取不带 Play 服务的 Android(电视)模拟器,并为其取一个方便的名称
  • 转到 $ANDROID_HOME/emulator 和 运行 ./emulator @<emulatorname> -writable-system。如果您通过 Android Studio 运行 模拟器,您将无法将系统分区挂载为可写分区。
  • adb root
  • adb remount
  • openssl x509 -inform PEM -subject_hash_old -in <your certificate>.pem | head -n 1 ,这将为您提供在以下步骤中需要的哈希值
  • <your certificate>.pem 重命名为 <hash>.0(例如 711d79cc.0)
  • adb push <hash>.0 /system/etc/security/cacerts/<hash>.0
  • adb shell chmod 644 /system/etc/security/cacerts/<hash>.0