javax.net.ssl.SSLPeerUnverifiedException错误原因分析:xx.yy.subdomain.domain.tld与*.subdomain.domain.tld证书是否匹配?
问题原因分析与解答
首先直接给结论:没错,你的目标域名 xx.yy.subdomain.domain.tld 和证书中的 *.subdomain.domain.tld 确实不匹配,这正是你遇到 javax.net.ssl.SSLPeerUnverifiedException 错误的核心原因。下面详细拆解:
通配符证书的匹配规则
SSL证书里的通配符 * 有严格的限制:它只能匹配单个域名段,也就是通配符所在位置的那一级子域。举个例子:
*.subdomain.domain.tld只能匹配a.subdomain.domain.tld、test.subdomain.domain.tld这类仅在subdomain前多一级子域的域名;- 而你的目标域名
xx.yy.subdomain.domain.tld是在subdomain前多了两级子域(xx.yy),这超出了通配符的匹配范围,所以证书验证会失败。
额外注意:错误中的域名后缀问题
你提到错误信息里显示的是 Hostname xx.yy.subdomain.domain.com not verified,但你实际要连接的是 xx.yy.subdomain.domain.tld——这里还有个域名后缀不一致的问题:证书的SAN条目里有 subdomain.domain.com,但这是完全匹配的单域名,既不匹配多两级子域的 xx.yy.subdomain.domain.com,也和你实际要访问的 .tld 后缀域名无关。如果这是代码里的拼写错误(把 .tld 写成了 .com),那也会加剧验证失败的问题。
总结
导致错误的两个关键原因:
- 通配符
*.subdomain.domain.tld无法匹配两级子域前缀的xx.yy.subdomain.domain.tld; - 错误信息中的域名后缀
.com与你实际目标的.tld不符,且证书中对应的.com条目也不匹配多子域的情况。
内容的提问来源于stack exchange,提问作者Tauri
相关产品推荐
相关产品推荐

