如何信任JDK11中的通配符DNS *?

伊兹巴萨·托勒根

有一个服务器使用具有以下 SAN 记录的证书创建 HTTPS:

SubjectAlternativeName [
  DNSName: localhost
  IPAddress: 127.0.0.1
  URIName: https://localhost
  DNSName: *
]

当我尝试从 JDK11 连接到此服务器时,出现以下错误:

javax.net.ssl.SSLHandshakeException:找不到与主机服务匹配的主题替代 DNS 名称。

其中host-service是主机名,服务所在的位置。我仔细检查了信任库,它需要ca-certs信任证书。同样的应用程序在使用 JDK8 时也能正常工作。

是不是在 JDK11 中信任通配符 DNS 的默认行为已经改变,现在它不起作用了?此外,相关问题可能是服务器使用TLSv1.1. 但是我配置了我的客户端应用程序来运行,-Djdk.tls.client.protocols="TLSv1.1,TLSv1.2"所以这应该可以工作。没有以任何方式更改默认 SSL 上下文,并且信任库位于默认路径 ( /etc/pki/java) 中。

伊兹巴萨·托勒根

我能想到的唯一方法是使用不安全的 SSL 作为默认值:

TrustManagerFactory trustManagerFactory = InsecureTrustManagerFactory.INSTANCE;
SslContext sslContext;
SSLContext defaultSSLContext;
try {
    sslContext = SslContextBuilder.forClient()
                    .trustManager(trustManagerFactory)
                    .build();
    defaultSSLContext = SSLContext.getInstance("SSL");
    defaultSSLContext.init(null, trustManagerFactory.getTrustManagers(), null);
} catch (Exception ex) {
    throw new IllegalStateException(ex);
}
SSLContext.setDefault(defaultSSLContext);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在jdk11中使用JavaFX?

JDK11中LinkedHashMap中的代码是否无效?

如何使用JDK11防止java.lang.IllegalAccessError?

Z在JDK11中Z到底指的是什么

如何使用JDK8和JDK11阅读的Java注释的价值?

如何使用NetBeans 10打包javafx11 / jdk11应用程序

使用checkSystemClipboardAccess替代的JDK11

哪里的wsimport JDK11后

JDK11 中的 ZGC 名称中的字母“Z”究竟指的是什么?

JDK11 / JavaFX的:如何让我不构建/ depdency管理脂肪罐子?

如何为打开的JDK11设置JAVA_HOME和JRE_HOME变量

JDK11迁移:Eclipse 2018-12中显示了编译错误,但代码运行正常

elasticsearch 1.6 elasticsearch命令和代码在jdk11中不起作用

带有 JDK11 和 javafx 的 Netbeans11

Hibernate JPAModelGen 5.4.6.Final 在 JDK11 上失败

Maven的有JDK11:javac的:无效标志:--release

无法使用更新替代--install安装jdk11

允许Eclipse识别标准库JDK11修补模块

安装jdk11后无法打开Eclipse

如何解决在JDK11 Tomcat9 Spring应用程序的javax运行时错误

了解从JDK8更改为JDK11的SocketAddress的本机代码

无法使jdk11在Eclipse上工作以开发javafx应用程序。(Ubuntu)

来自文件的 JDK11 getFreeSpace 和 getTotalSpace 与 df 不匹配

在JDK11之后发布javafx应用程序是否需要javafx-maven-plugin?

我怎么能确定我是否拥有JDK11的“免费”或“非自由”的版本?

为什么我的JDK11程序受到Windows 7的个性化显示设置?

什么是 “CGC” 和 “CGCT” 在JDK11 “jstat -gc <PID>” 的意思?

无法创建JDK11 javac的变量只有类文件JNI头文件

Quarkus 生成的项目在 GraalVM 19.3 和 JDK11 上失败