You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android网络安全配置疑问:<certificates src="system"/>是否安全及作用

关于Android Network Security Config中<certificates src="system"/>的疑问解答

1. 该语句的具体含义

<certificates src="system"/>表示让应用信任Android系统预装的所有根CA证书——这些是全球主流权威CA机构颁发的根证书,Android出厂时默认信任它们,用于验证绝大多数正规HTTPS网站的证书合法性。

2. 添加该语句是否安全?

安全与否取决于你的业务场景:

  • 如果你的服务器证书由权威CA(如Let's Encrypt、DigiCert等)签发,保留该标签完全安全,属于常规操作。
  • 如果服务器使用自签证书或企业内部CA证书,同时保留system意味着应用仍会信任所有系统默认根证书:若应用还需访问外部HTTPS站点,这个配置合理;若应用仅需访问内部服务器且想实现仅信任指定证书的严格校验,保留system会扩大信任范围,此时需确认@raw/cert是否为完整根CA证书,再决定是否移除。

3. 是否为正确的配置方式?

需结合需求和证书实际情况判断:

  • 你移除该标签后报错的核心原因:res/raw/cert中的证书不是完整的信任锚(根CA证书)——可能是服务器端证书或中间证书,验证服务器证书链时需依赖系统信任的根证书完成全链校验,因此必须保留system。
  • 若目标是仅信任自定义证书,需将能直接验证服务器证书链的完整根CA证书放入res/raw,再移除system,即可正常校验且更严格。
  • 若应用需同时访问内部服务器(用自定义证书)和外部正规HTTPS站点,同时保留<certificates src="@raw/cert"/>和<certificates src="system"/>是正确配置,两种场景的证书验证均可正常工作。

补充:移除system触发SSL异常的原因

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.错误说明:应用验证服务器证书链时,找不到被信任的根证书(信任锚)。仅指定@raw/cert无法作为信任锚完成全链验证,必须依赖系统根证书才能完成校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:12:58