java - PKIX 证书路径错误 : ok with java, 不适用于 Tomcat

标签 java tomcat https liferay pkix

我们使用 Java JDK 1.8.0_112、Tomcat 8.0.32 和 Liferay 框架 7.0-GA4。

我们必须向某个 HTTPS URL 发送 POST 请求。

使用一个简单的 Java 类,所有代码都在 main 函数中,一切正常。

使用 Tomcat(带有 Liferay 框架)它不起作用,我们得到以下异常。

 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

使用 SSL 调试启动选项 (-Djavax.net.debug=trustmanager,SSL) 我们可以看到在这两种情况下使用的信任库确实相同:/usr/java/jdk1.8.0_112/jre/lib/security/cacerts.

Java console/main function app中请求URL的代码和Tomcat运行的代码完全一致(使用java.net.HttpURLConnection)。

如果我尝试用“https://google.com”替换我请求的 URL,它在主函数和 Web 应用程序代码中都有效。

我很迷茫:如果证书确实无效,为什么它可以使用 java MyClass 工作?如果证书有效,为什么它在网络应用程序中不起作用?

最佳答案

也许您的 tomcat 应用程序服务器(失败)运行的 JRE 版本与您的单元测试所使用的 JRE 版本不同?

也许它使用的是与强密码不兼容的先前版本,即使我们可以确保使用相同的 keystore 文件,它也会失败。在这种情况下,您只需确保 JRE 版本相同即可。

看看https://www.java.com/en/jre-jdk-cryptoroadmap.html查看 JRE 版本和密码算法之间的详细文档和兼容性矩阵。

关于java - PKIX 证书路径错误 : ok with java, 不适用于 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49068333/

相关文章:

tomcat - 在 Tomcat 应用程序上使用 jHiccup 时没有日志文件

java - 在 tomcat + jsf 中的 https 之后重定向到 http

带有身份 keystore 的 ssl weblogic

ruby-on-rails - Rails 和 Devise : set Secure flag when requested via HTTPS, 在未通过 HTTPS 请求时不设置安全标志

java - 我的 Java 编码中的数字和字符串有问题

java - WebLogic 12c - 目标不可达异常

java - 将请求和响应从 jsp 发送到 servlet

java - 基本类型之间的转换会导致堆分配吗?

java - 使用批处理文件重启远程tomcat以停止手动干预重启?

apache - http 到 https 重定向不起作用(Letsencrypt)