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

javax.net.ssl.SSLPeerUnverifiedException疑问:匹配证书通配符仍报错?

SSLPeerUnverifiedException:通配符证书匹配失败问题解析

错误信息

javax.net.ssl.SSLPeerUnverifiedException: Certificate for <g.i.t.n.c.com> doesn't match any of the subject alternative names: [*.t.n.c.com]

问题原因

你遇到的问题是通配符证书的匹配规则限制:
根据RFC 2818规范,证书中的通配符*.t.n.c.com仅能匹配t.n.c.com的直接子域名(即单个域名标签替换通配符),比如xxx.t.n.c.com。而你的目标主机g.i.t.n.c.com是t.n.c.com的下两级域名(孙子域名),不在该通配符的匹配范围内。

Apache HttpClient 4.5.9严格遵循这一规范进行主机名验证,因此会抛出该异常。

解决方案

1. 调整证书(推荐生产环境使用)

  • 直接将g.i.t.n.c.com添加到证书的Subject Alternative Names(SAN)字段中;
  • 如果需要匹配该层级的所有子域名,可以申请包含*.i.t.n.c.com的证书(同样遵循单层级通配规则)。

2. 临时绕过主机名验证(仅测试环境使用)

如果是测试场景,可通过关闭HttpClient的主机名验证绕过该错误,但绝对禁止在生产环境使用,会带来严重安全风险:

import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.conn.ssl.NoopHostnameVerifier;

CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
        .build();

3. 注意事项

升级HttpClient版本无法解决该问题,因为所有遵循RFC规范的HTTP客户端都会执行相同的通配符匹配逻辑,核心矛盾在于证书与目标主机的域名层级不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:16:04