【发布时间】:2018-07-27 18:44:44
【问题描述】:
我有一个 Apache Web 服务器,前面有一个运行我的网站的 Tomcat 8 Web 服务器,我正在将顶级域从 my.website.ie 切换到 my.website.com。我有一些代码可以响应生成 PDF 的特定请求而运行。该代码获取从同一 Web 服务器提供的图像(使用 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 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
...
原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
...
原因:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
我对此错误的理解是目标 URL 上的证书不受信任(例如自签名),但在这种情况下并非如此。此外,两台服务器都在访问相同的图像 URL,那么为什么一台服务器信任证书而另一台不信任呢?
我没有在.ie 服务器上进行任何我没有在.com 服务器上进行的额外配置更改(关于设置新证书),所以还有其他一些(错误)配置我没有考虑过?
【问题讨论】:
标签: java ssl ssl-certificate tomcat8 sslhandshakeexception