You need to enable JavaScript to run this app. 如何为搭载Android 9的Android TV安装自签名证书
优惠活动
大模型
产品
解决方案
定价
更多

如何为搭载Android 9的Android TV安装自签名证书

Android 9 电视端部署mitmproxy解决证书信任报错的实操方案

针对遇到的client handshake failed. The client may not trust the proxy’s certificate报错,结合Android 9 TV的权限特性,不需要一上来就走全量root流程,可按优先级按下面的步骤排查落地:

无Root环境下优先可尝试的方案

  • 先核对当前adb连接的系统用户身份:Android 9 对非机主用户的证书目录做了访问隔离,很多TV的adb调试默认挂载在二级用户下,哪怕手动安装证书也不会被全局信任。执行adb shell cmd user list确认机主用户ID,通过adb shell cmd user sw <机主用户ID>切回主用户后,再执行后续证书安装操作。
  • 按Android证书规范准备适配的CA文件:将mitmproxy导出的PEM格式CA通过命令openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.pem计算旧版兼容的哈希值,把证书文件重命名为<计算得到的哈希值>.0格式。
  • 尝试将证书推送至用户可写的证书目录:执行adb push ./<重命名后的证书文件> /data/misc/user/0/cacerts-added/,该目录属于用户级存储,在多数未锁死写入权限的TV上,不需要root就能完成写入,证书生效后即可被系统标记为用户信任的CA。
  • 定向单应用抓包适配:如果目标TV应用本身默认不读取用户级CA,可解包目标APK,修改应用内的res/xml/network_security_config.xml配置,将mitmproxy CA加入应用的信任列表,重打包签名后安装到电视上,全程不需要修改系统目录。

需要修改系统级证书目录的实操注意点

如果上述无root流程完全失效,需要通过root操作将CA装入系统证书目录时,要避开几个高频踩坑点:

  • Android 9 的系统证书默认存放路径为/system/etc/security/cacerts/,该分区默认以只读模式挂载,拿到root权限后首先要执行mount -o remount,rw /system将分区重新挂载为可写状态,否则会出现写入权限拒绝的报错。
  • 证书推入系统目录后必须对齐文件权限与属主:执行chmod 644 /system/etc/security/cacerts/<证书文件名>、chown root:root /system/etc/security/cacerts/<证书文件名>,权限不对的证书哪怕放在正确目录下,系统也不会加载。
  • 针对/system分区带启动校验、无法直接remount的设备,可通过Magisk的系统模块挂载机制,把修改后的cacerts目录封装成第三方模块放置在Magisk模块目录下,重启后由系统优先加载模块内的证书,不需要修改原系统分区的存储内容,避免触发启动校验导致设备变砖。

额外排查提示:如果完成证书配置后仍弹出相同的握手报错,需要同步检查透明代理的路由转发规则,确认电视的所有出站流量确实被导向mitmproxy的监听端口——部分场景下流量未经过代理也会在连接阶段抛出相同的客户端信任错误,容易误判为证书配置失效。


内容的提问来源于stack exchange,提问作者CarlottaT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 06:36:02