手机和操作系统

网络可能会受到监控:安卓这条提示的意思和去除方法

作者: · 最后核实

报错信息Network may be monitored

“网络可能会受到监控”的意思是:你的安卓设备的可信凭据里多了一个证书颁发机构(CA),控制这个 CA 的人有能力解密信任它的应用发出的 HTTPS 流量。 这不是报错,也不代表已经有人在监控你。它说明这台设备上的 HTTPS 少了一层保证:能出示受信任证书的,不再只有网站本身。

这句话会出现在哪里

Android 4.4 到 6.0 把这句话放在通知标题,7.0 起移到快捷设置面板底部和设置里的对话框(以下是原生安卓的文字,各厂商系统可能会改写):

安卓版本 出现的位置
4.4 到 6.0 通知栏标题就是“网络可能会受到监控”,正文为“受到不明第三方的监控”
7.0 及以上 通知标题改为“已安装证书授权服务”,正文为“受到不明第三方的监控”“由您的工作资料管理员监控”或“受到 example.com 监控”
7.0 及以上 下拉快捷设置面板底部显示“网络可能会受到监控”;设置里的对话框标题也是这句话

设置里的对话框会进一步解释:“第三方可以监控您的网络活动,包括收发电子邮件、使用应用和浏览安全网站。出现这种情况的原因是您在设备上安装了信任的凭据。”

风险有多大

风险大小取决于两点:谁掌握这个 CA 的私钥,以及哪些应用信任它。从 Android 7.0 开始,面向 API 24 及以上版本构建的应用默认只信任系统 CA,除非开发者主动选择信任用户 CA(见 安卓 App 不信任用户 CA),所以大多数银行、购物类应用并不理会用户添加的 CA;浏览器和面向旧版本构建的应用则可能信任它。实际拦截还需要流量路径上有东西在使用这个 CA,比如 VPN 应用、代理设置或网络设备。为了调试在测试机上临时装的 CA 风险很小;日常用的手机上出现一个说不清来历的 CA,就要查清来源。

常见原因(按出现频率排序)

多数提示来自你自己为抓包或某个工具装的 CA,其次是 VPN、广告过滤类应用和公司的设备管理。

1. 你自己为了抓包或某个工具装了 CA

开发和测试人员为了查看 HTTPS 内容,会装 Charles、Fiddler、mitmproxy 或手机抓包应用生成的根证书。只要不删,提示就一直在。

2. VPN、广告过滤、家长控制或杀毒类应用

要过滤 HTTPS 内容就必须有自己的 CA,这类应用通常在首次设置时引导用户安装证书,原理和 杀毒软件 HTTPS 扫描 相同。回想最近装过哪些应用,设置时有没有让你装证书。

3. 设备由公司或学校管理

工作资料或完全受管的设备,通知里会写工作资料管理员或管理机构的域名。公司的上网行为管理、HTTPS 审计设备就靠这类 CA 工作,详见 公司 SSL 解密。删之前先问 IT,一般策略会自动重新装上。

4. 配置 Wi-Fi 或 VPN 时导入了 CA

一些企业 Wi-Fi、VPN 的配置说明会让用户安装 CA 证书。如果它被装进了通用的 CA 存储,而不是只用于那条连接,同样会触发提示。

5. 来历不明的证书

如果怎么也想不起来这张证书是哪来的,就要当成风险处理:跟踪软件和恶意描述文件用的也是同一套机制。

先确认是哪张证书

“可信凭据”的“用户”标签页列出了所有后来添加的 CA,证书的签发者名称通常就能说明来源。

  1. 点通知或快捷设置面板底部的提示,选择“检查证书”,对话框会列出 CA 名称。
  2. 或者进入“设置 > 安全(或安全和隐私)> 更多安全设置 > 加密与凭据 > 可信凭据”,切到“用户”标签页,这里的每一项都是后来添加的。国产系统的菜单名称和层级各不相同,可以直接在设置里搜索“凭据”或“证书”。
  3. 点开某一项,看签发者、有效期和指纹。“Charles Proxy”“mitmproxy”或某个应用厂商的名字,基本就能说明来源。

怎么处理

处理原则是删掉不需要的 CA,并先卸载会把它装回来的应用。

删除不再需要的 CA: 在“可信凭据 > 用户”里点开证书,选择“卸载”。Pixel 手机还可以在“加密与凭据 > 用户凭据”里删除指定凭据,或者用“清除凭据”删除所有用户证书。

先卸载会安装证书的应用: VPN、过滤、抓包类应用不卸载,它可能会再把 CA 装回来。

受管设备: 公司要求保留的就保留,或者请 IT 移除工作资料。

开发者: 抓包 CA 只装在测试机上。应用里只让调试版信任用户 CA:

<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

安卓文档说明 debug-overrides 只在 android:debuggable 为 true 时生效,发布版本不受影响。

怎么确认已经处理好

“用户”标签页清空、重启后提示不再出现,就说明处理好了。逐项核对:

  1. “可信凭据 > 用户”标签页为空,或者只剩你决定保留的 CA。
  2. 重启后通知栏和快捷设置面板底部都不再出现提示。
  3. 用 Chrome 打开一个熟悉的网站,点地址左边的图标查看证书,签发者应是公共 CA,而不是某个代理或过滤产品;也可以和 SSL 检测 的结果对比。

常见问题

出现这个提示,是不是说明有人正在看我的流量?

不是。它表示“有这个可能”:你或管理员添加的 CA 被设备信任了。是否真的被拦截,要看有没有代理、VPN 应用或网络设备在使用这个 CA。先查清楚是谁装的,再决定怎么处理。

证书删了,过一阵提示又出现了,为什么?

有应用或者设备策略在重新安装它。工作手机或公司管理的设备上,MDM 会自动把公司的 CA 装回来;个人手机上,找找有没有在设置过程中要求安装证书的 VPN、广告过滤、家长控制或“安全”类应用,先把应用卸掉。

抓包用的 CA 一直留着安全吗?

不建议长期留着,只在测试机上、需要时安装。拿到这个 CA 私钥的人(比如你电脑上抓包工具生成的密钥)可以在信任用户 CA 的浏览器里解密你的 HTTPS 流量。测试结束就删掉。

装了抓包证书,为什么有些应用还是抓不到、甚至直接报错?

面向 API 24 及以上版本构建的应用默认忽略用户添加的 CA,除非应用自己的网络安全配置选择信任,通常只在调试版里通过 debug-overrides 开启。详见 安卓应用不信任用户证书。

资料来源

  1. AOSP SystemUI 字符串(quick_settings_disclosure_monitoring)
  2. AOSP 系统框架字符串(ssl_ca_cert_warning)
  3. AOSP 设置应用字符串(ssl_ca_cert_warning_message)
  4. Android Developers: 网络安全配置
  5. Pixel 手机帮助:添加和移除证书