【问题标题】:Install certificate on AndroidTV在 AndroidTV 上安装证书
【发布时间】:2017-07-15 17:39:55
【问题描述】:

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

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

非常感谢!

【问题讨论】:

  • 这个SO post 将帮助您安装证书。然后,您可能想尝试将您的 Android TV 连接到运行 Charles 代理的机器,如 YouTube video 所示。
  • 我也在尝试。即使给定 android.permission.MANAGE_CA_CERTIFICATES ,电视上也没有菜单项, createInstallIntent 也会失败。我似乎找不到任何方法(手动/编)。有人可以重定向到信息以了解为什么它不可能吗?
  • 你有解决这个问题的方法吗
  • 你找到解决办法了吗?
  • @ZahidRasheed。我没有

标签: android-tv


【解决方案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】:

    您可以通过编程方式完成。有关详细信息,请参阅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?
    

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-11-04
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 2016-05-29
        相关资源
        最近更新 更多