首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何信任JDK11中的通配符DNS *?

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

Stack Overflow用户
提问于 2021-04-02 12:35:50
回答 1查看 135关注 0票数 0

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

代码语言:javascript
运行
复制
SubjectAlternativeName [
  DNSName: localhost
  IPAddress: 127.0.0.1
  URIName: https://localhost
  DNSName: *
]

当我试图从JDK11连接到这个服务器时,我会得到以下错误:

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

其中,host-service是服务所在的主机名。我反复检查了信任库,它拥有信任证书所需的ca-certs。在使用JDK8时,同样的应用程序也可以很好地工作。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 15:55:06

我能想出的唯一方法是使用不安全的SSL作为缺省值:

代码语言:javascript
运行
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66919432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档