我的团队在调用api
时发现以下异常https://abc_xyz.stg.myweb.com/api/AuthorizedUser?username=admin&password=admin
java.security.cert.CertificateException:非法的域名
使用Jersey从服务器获取响应时。 当我收到邮递员的回复时,一切都很好。
为什么它是非法域名,浏览器是否拒绝打开此域名。
如果我的域名不包含下划线,则此异常不会上升。 这是域名中的下划线问题吗?
答案 0 :(得分:5)
如果有人再次看到这个问题。这个问题是由旧的jdk认为,下划线作为子域名无效,后来从jdk中删除。所以简而言之,升级jdk版本将解决这个问题。
答案 1 :(得分:1)
如果有人再次看到此问题并且不想更改jdk版本,则可以禁用SSL主机名验证(这不是很好的解决方案,但有时无法避免。) :
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
答案 2 :(得分:0)
我遇到了同样的问题,无法更新jdk,也不想禁用SSL主机名验证。将名称中的下划线字符更改为破折号(“-”而不是“ _”)非常有效。显然,破折号和下划线的评估结果相同。