我需要查看我的androidTV应用程序发出的后端https请求,但是,由于呼叫是“https”呼叫,我需要安装一个查尔斯证书(在我的androidTV上)以允许查尔斯解密它们。
如果有人知道如何在androidTV上安装证书,请告诉我。
非常感谢!
答案 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 证书,即使设置中没有可用的用户界面。
要在模拟器中安装您的证书,请按以下步骤操作:
$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