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

Google Play报X509TrustManager/HostnameVerifier安全漏洞排查

问题诊断

你提供的代码确实存在明确的安全漏洞,完全命中Google Play给出的两条警告,具体问题如下:

  • 不安全的X509TrustManager实现:
    你的HttpsTrustManager类完全没有实现合规的服务端证书校验逻辑:checkClientTrusted是空实现,checkServerTrusted仅检查了证书本身的有效期,没有校验证书链的合法性、证书是否由受信任的CA签发;isClientTrusted、isServerTrusted方法直接返回true,等于无条件信任所有证书;getAcceptedIssuers返回空数组,不符合接口规范。这种实现会让中间人攻击完全可行,攻击者可以随意伪造证书窃取你App所有HTTPS通信的明文数据。你收到的Apache TrustManager警告,也是因为这个不安全的TrustManager被同步配置给了App内使用的Apache HTTP客户端,导致同个漏洞出现在Apache客户端的网络链路中。
  • 不安全的HostnameVerifier实现:
    你在allowAllSSL方法中自定义的HostnameVerifier直接在verify方法返回true,完全跳过了域名匹配校验,哪怕证书是签发给其他恶意域名的,连接也会被放行,进一步放大了中间人攻击的风险。
  • 额外风险:你调用的HttpsURLConnection.setDefaultSSLSocketFactory和setDefaultHostnameVerifier是全局配置,会影响App内所有基于HttpsURLConnection的请求,风险覆盖全App的网络通信。
修复方案

普通场景(服务端使用公网CA签发的合规证书)

直接删除整个HttpsTrustManager类,移除所有对allowAllSSL()方法的调用即可。
系统默认内置的X509TrustManager和HostnameVerifier已经实现了符合TLS规范的完整校验逻辑:包括证书链有效性校验、证书签名校验、证书有效期校验、域名匹配校验,完全满足Google Play的安全审核要求,不需要额外自定义实现。
如果你的项目中使用了Apache HTTP客户端,同样不要给Apache客户端配置任何自定义的全放行SSLSocketFactory、HostnameVerifier,使用默认配置即可。

特殊场景(服务端使用自签名证书/私有CA签发证书)

如果你确实因为业务需要,不能使用公网CA签发的证书,也不能做全量放行,需要按以下规则实现:

  1. 将你的服务端CA根证书打包进App的assets资源目录,不要硬编码证书内容
  2. 加载App内置的CA证书生成专属KeyStore,仅用这个KeyStore初始化TrustManager,只信任你自己持有的CA签发的证书,不要信任所有外来证书
  3. HostnameVerifier不要无条件返回true,仅在证书域名匹配你自己的合法服务域名时返回true,其余场景一律返回false
  4. 不要调用setDefaultSSLSocketFactory、setDefaultHostnameVerifier做全局配置,仅给你需要访问自签名服务的特定网络客户端配置自定义校验逻辑,避免影响其他正常的公网请求。
验证方法

修复完成后可以做简单校验:在测试机上安装抓包工具的根证书,设置代理尝试抓你App的HTTPS包,如果App直接拒绝连接、抓包工具无法拿到明文请求内容,说明校验逻辑正常;如果能正常抓到明文,说明还存在漏洞需要调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:18:16