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

Java服务端调用FCM推送接口突发Hostname fcm.googleapis.com not verified错误

问题本质

你遇到的是Java服务端HTTPS请求的主机名校验失败错误,Postman可正常调用说明FCM服务本身、网络链路是正常的,问题集中在Java服务端的SSL配置、HTTP客户端实现或者证书库上。
你收到的错误如下:

{
  "succeeded":false,
  "responseMessage":"Exception occurred; Hostname fcm.googleapis.com not verified:\n    certificate: sha256/AVd9CvtM+BHfQgygNjExC4aOvHSEGRyX7Vvuus9jd9k=\n    DN: CN=*.google.com\n    subjectAltNames: [*.google.com, ...
}

错误显示服务端返回的证书CN是*.google.com,Java侧的校验逻辑认为fcm.googleapis.com不符合该证书的域名匹配规则。

排查解决思路

  • 核对HTTP客户端版本及校验规则

    旧版本的HTTP客户端(如Apache HttpClient 4.3之前、OkHttp 2.x之前)对通配符证书的匹配规则不符合RFC标准,*.google.com默认只能匹配xxx.google.com这类一级子域名,而fcm.googleapis.com是三级子域名,旧版本会判定不匹配。如果你近期升级过HTTP客户端、JDK版本,优先回滚或者升级HTTP客户端到官方最新稳定版验证。
  • 校验JDK根证书库完整性

    如果你使用的是企业定制版JDK,或者手动修改过JDK的cacerts证书库,可能缺失Google证书对应的根CA证书,或者存在过期的根CA,导致证书链校验失败触发连带的主机名校验错误。
    可以在服务端环境执行JDK自带命令验证:keytool -printcert -sslserver fcm.googleapis.com:443,如果命令执行报错,替换为官方原生JDK的默认cacerts文件即可。
  • 排查是否存在中间人代理/流量劫持

    检查Java服务端是否配置了内网HTTPS代理,部分企业网关代理会替换HTTPS证书为自签名证书,返回的证书SAN列表中可能确实没有包含fcm.googleapis.com,导致校验失败。Postman如果单独配置了跳过证书校验、或者走了不同的网络链路,就会出现两边表现不一致的情况。
    可以给Java服务添加启动参数打印完整SSL握手日志:-Djavax.net.debug=ssl,handshake,拿到返回的证书信息和Postman获取的FCM官方证书对比,确认是否被篡改。
  • 临时校验方案(仅用于排查,禁止生产长期使用)

    如需快速验证是否为主机名校验逻辑的问题,可以临时给HTTP客户端配置宽松的主机名校验器(如NoopHostnameVerifier),如果配置后请求正常即可100%定位是主机名校验规则的问题,后续再针对性修复校验逻辑即可,不要长期关闭校验避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:18:04