在AndroidTV上安装证书

时间:2017-02-24 18:55:39

标签: android-tv

我需要查看我的androidTV应用程序发出的后端https请求,但是,由于呼叫是“https”呼叫,我需要安装一个查尔斯证书(在我的androidTV上)以允许查尔斯解密它们。

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

非常感谢!

3 个答案:

答案 0 :(得分:1)

您可以通过编程方式执行此操作。有关详细信息,请参阅here。不幸的是,我还没有找到从Android TV 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?

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

答案 1 :(得分:1)

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

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

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

2- 通过 network-security-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).

答案 2 :(得分:0)

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

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

  • 获取不带 Play 服务的 Android (TV) 模拟器并为其取一个方便的名称
  • 转到 $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