Java证书不匹配:建立HTTPS连接时遇SSLPeerUnverifiedException异常求助
嘿,这个问题我之前帮好几个开发者排查过,咱们来把它捋清楚:
问题核心原因
你碰到的 javax.net.ssl.SSLPeerUnverifiedException 错误,本质是SSL证书的主题备用名称(SAN)和你实际访问的域名不匹配。
你可能以为证书里的 *.dev.prod.domain.net 通配符能覆盖所有层级的子域名,但其实SSL证书的通配符规则很明确:它只能匹配紧邻通配符的下一级域名。具体到你的情况:
*.dev.prod.domain.net可以匹配mysite.dev.prod.domain.net(这是直接挂在dev.prod.domain.net下的一级子域名)- 但完全匹配不了
www.mysite.dev.prod.domain.net——这个域名是mysite.dev.prod.domain.net的子域名,属于通配符的“下下一级”,不在证书的覆盖范围内。
另外你提到的CN(通用名称),现在不管是浏览器还是Java的SSL验证逻辑,都是优先校验SAN字段的,哪怕CN里包含相关域名,只要SAN不匹配,照样会抛出验证错误。
可行的解决办法
你有两个直接的方案可以选:
- 更新SSL证书:把
www.mysite.dev.prod.domain.net或者更宽泛的*.mysite.dev.prod.domain.net(如果需要匹配该前缀下的更多子域名)添加到证书的SAN字段里,重新签发证书后替换即可。 - 调整访问域名:直接使用证书已经覆盖的
mysite.dev.prod.domain.net来访问服务,去掉额外的www前缀。
内容的提问来源于stack exchange,提问作者The_learning_guy
相关产品推荐
相关产品推荐

