gpt4 book ai didi

java - Tomcat 服务器上具有有效证书的 SSLHandshakeException

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:21 26 4
gpt4 key购买 nike

我有一个 Apache 网络服务器面向运行我的网站的 Tomcat 8 网络服务器,我正在将顶级域从 my.website.ie 切换到 my.网站.com。我有一些代码运行以响应生成 PDF 的特定请求。该代码获取从同一网络服务器提供的图像(使用 URL),例如

Image.getInstance(new URL("https://my.website.com/img/myimage.png"))

除了域更改之外,我还将我的 SSL 证书提供商更改为 LetsEncrypt(免费 SSL 证书)。我在新 .com 域的开发网站正在运行,证书有效且不会在数月内过期。

我有另一个开发服务器在一台单独的机器上运行,它仍在使用 .ie 域。在这两个服务器上运行的 Tomcat 代码库现在是相同的。他们都试图在该特定代码段中从上面显示的 URL 获取图像。

.ie 服务器上,生成 PDF 的请求工作正常,获取图像没有任何问题。在 .com 服务器上,请求失败并出现此错误:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我对此错误的理解是目标 URL 的证书不受信任(例如自签名),但在这种情况下并非如此。此外,两台服务器都为图像点击相同的 URL,那么为什么一台服务器信任证书而另一台服务器不信任?

我没有在 .ie 服务器上做任何我没有在 .com 服务器上做的额外配置更改(关于设置新的证书),那么还有其他一些我没有考虑过的(错误的)配置吗?

最佳答案

不信任表示所使用的 CA 不受软件信任。自签名证书永远不受信任。

Java 有它自己的信任库(仅在 Linux 上使用系统信任库 AFAIR?)。如果 CA 证书比使用的 Java 版本更新,则 Java 可能不信任 CA。结论:更新您的 Java。

根据这个 Stackoverflow 答案,您至少需要 Java 8u101 才能支持 Let's Encrypt:

Does Java support Let's Encrypt certificates?

关于java - Tomcat 服务器上具有有效证书的 SSLHandshakeException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833858/

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