gpt4 book ai didi

javax.net.ssl.SSLPeerUnverifiedException : Certificate for 不匹配任何主题备用名称 : [*. app.domain]]

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:36 25 4
gpt4 key购买 nike

我正在使用自定义私有(private) CA,并希望在两个服务之间进行通信,这两个服务都使用自定义证书。但是,我收到一个我不明白的错误

因此,在这两种服务上,我都使用私有(private) CA 设置了一个信任库,并使用它自己标识的证书设置了一个单独的 keystore 。在浏览器中转到一个简单的/hello 路由表明连接是安全的(即发行者是已知的并且通用名称是有效的)。这与我 curl -iv https://{address} 时相同,它表示握手已通过,表示“SSL 证书验证正常”,并且该域与证书上的通配符名称匹配。

但是,当我尝试从以完全相同的方式设置的单独服务执行简单的 GET 请求时,我收到标题中列出的错误。问题是它说我正在尝试联系的服务的证书无法将其证书中的任何主题备用名称与其注册的域匹配。但那是绝对不正确的,唯一的区别是它使用了通配符。这适用于浏览器和调试握手的 curl 命令。它只是不来 self 在单独的微服务上的 Java/Spring Boot 代码。

Java 是否以更严格的方式不同地工作,这意味着它不喜欢使用通配符证书联系服务器?

编辑:添加下面显示的行修复了这个问题,因此它在 Java 中的主机名验证失败(但在浏览器上或使用 curl 调试)。这是不安全的,因此不是解决方案。

SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(truststore, null).build();
HostnameVerifier hostnameVerifier = new NoopHostnameVerifier(); // I added this line, but it's advised against as it's insecure
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);

最佳答案

所以我设法通过添加我自己的 HostnameVerification 方法来解决这个问题。我以此为例 https://raw.githubusercontent.com/masover/wildcard-hostname-verifier/master/src/net/forkbox/weblogic/WildcardHostnameVerifier.java

关于javax.net.ssl.SSLPeerUnverifiedException : Certificate for <sub. app.domain> 不匹配任何主题备用名称 : [*. app.domain]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58730815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com