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

2021年9月29日起安卓HttpURLConnection调用Let's Encrypt证书站点失败

问题根因
  • 首先可以排除旧设备不兼容ISRG Root X1的问题,你遇到的全设备报错、浏览器访问正常的现象,核心是系统原生网络组件和浏览器的证书信任逻辑差异导致的:
    1. Chrome等浏览器自身内置了独立的根证书库,内置了ISRG Root X1证书,验证时会优先使用自身的信任库,不受系统根证书和站点证书链配置的影响,所以访问正常。
    2. HttpURLConnection默认使用安卓系统的根证书信任库,且验证证书链时会优先匹配链中最先出现的根锚点。Let's Encrypt默认签发的是兼容旧设备的长证书链,链的末端锚定到已经过期的DST Root CA X3,HttpURLConnection匹配到这个过期根证书后会直接判定证书无效,不会尝试 fallback 匹配系统中已存在的有效ISRG Root X1根证书,因此无论设备新旧都会抛出证书错误。
    3. 若你的应用此前配置过证书锁定,锁定了旧的R3 intermediate证书或DST Root CA X3的指纹,也会触发全设备的证书校验失败。
HttpURLConnection的状态说明

HttpURLConnection并未被弃用,官方至今仍在维护该组件,无需强制替换为其他网络组件。如果你的应用本身没有其他网络库的使用需求,不需要盲目做迁移。

可行解决方案
  • 方案1:调整站点证书链配置,将Let's Encrypt签发的证书链切换为锚定ISRG Root X1的短链,不再包含指向DST Root CA X3的交叉签名部分,HttpURLConnection就可以正常匹配系统中的ISRG Root X1根证书完成验证。
  • 方案2:无需修改站点配置,在应用中内置ISRG Root X1根证书,给HttpURLConnection配置自定义的TrustManager,优先信任内置的ISRG根证书,即可跳过过期DST根的校验逻辑。
  • 方案3:若此前配置了证书锁定,更新锁定的指纹为当前有效R3证书或ISRG Root X1根证书的指纹即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:18:03