我试图在Jenkins/Hudson上配置我的电子邮件,但我经常收到错误:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
non-empty
我已经在网上看到了关于这个错误的大量信息,但我还没有得到任何工作。我在Fedora Linux上使用Sun的JDK(不是OpenJDK)。
以下是我尝试过的一些方法。我试着按照这篇文章的建议,但是从Windows复制cacerts到我的Fedora盒子托管Jenkins不起作用。我尝试按照这个指南,因为我试图配置Gmail作为我的SMTP服务器,但它也没有工作。我还尝试手动下载并移动这些cacert文件,并使用本指南中的命令的变体将它们移动到我的Java文件夹中。
我愿意接受任何建议,因为我现在被困住了。我已经让它在Windows Hudson服务器上工作了,但在Linux上却很吃力。
在Ubuntu 18.04上,根本原因是openjdk-11-jdk(默认值)和依赖于它的其他包之间的冲突。Debian已经修复了这个问题,Ubuntu很快也会修复。同时,最简单的解决方法是将java降级到版本8。使用ca-certificates-java的其他解决方案要复杂得多。
首先删除冲突包:
sudo apt-get remove --purge openjdk* java-common default-jdk
sudo apt-get autoremove --purge
检查您是否成功删除了所有相关的包:
sudo update-alternatives --config java
系统将提示您没有可供配置的Java,否则此解决方案将失败。
然后重新安装所需的软件包:
sudo apt-get install openjdk-8-jdk
在升级到Spring Boot 1.4.1(或更新版本)后也可能遇到此错误,因为它将Tomcat 8.5.5作为其依赖项的一部分。
问题在于Tomcat处理信任存储的方式。如果恰好在Spring Boot配置中指定了信任存储库位置与密钥存储库相同,那么在启动应用程序时可能会得到trustAnchors参数必须为非空的消息。
server.ssl.key-store=classpath:server.jks
server.ssl.trust-store=classpath:server.jks
只需删除server.ssl。信任存储配置,除非您知道您需要它,在这种情况下,请参考下面的链接。
以下问题包含该问题的详细信息:
HTTPS Tomcat连接器以1.4.1 #7069启动失败
带有自签名证书的SSL-client-auth停止工作#7406
升级到Tomcat 8.5.5 #6703