【问题标题】:Error : java.security.cert.CertificateException: Illegal given domain name: abc_xyz.stg.myweb.com错误:java.security.cert.CertificateException:非法给定域名:abc_xyz.stg.myweb.com
【发布时间】:2018-05-31 14:54:13
【问题描述】:

您好团队,我在调用 api 时发现以下异常

https://abc_xyz.stg.myweb.com/api/AuthorizedUser?username=admin&password=admin

java.security.cert.CertificateException: 非法域名

当使用 Jersey 从服务器获取响应时。 当我收到邮递员的回复时,一切都很好。

为什么是非法域名,浏览器是否不拒绝打开。

如果我的域名不包含下划线,则此异常不会上升。 这是域名下划线的问题吗?

【问题讨论】:

标签: java ssl


【解决方案1】:

以防万一有人再次看到此问题。此问题是由于旧 jdk 认为下划线作为子域名无效,在更高版本中已从 jdk 中删除。所以总之升级jdk版本就可以解决这个问题了。

【讨论】:

  • 您之前使用的是什么版本的 JDK?你也更新了什么版本?
  • 感谢@jacob,当我看到文档时它解决了我的问题,它说java 1.8.25 以上版本解决了这个问题。
【解决方案2】:

如果有人再次看到此问题并且不想更改 jdk 版本,可以禁用 SSL 主机名验证(这不是好的解决方案,但有时无法避免这种情况..) :

    HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    });

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,无法更新 jdk,也不想禁用 ssl 主机名验证。将名称中的下划线字符更改为破折号(“-”而不是“_”)效果很好。显然破折号和下划线的计算方式相同。

    【讨论】:

    • 这不是真的
    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 2016-10-24
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多