我试图在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上却很吃力。


当前回答

System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\user-id\\Desktop\\tomcat\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "passwd");

您必须将上述两行代码添加到代码中。无法找到信任存储库。

其他回答

在Ubuntu 18.04上,我需要使用OpenJDK 1.7来维护一个旧项目。我下载了二进制包。但当我执行我的脚本上,我得到了同样的错误。

解决方案是删除已下载JDK的jre/lib/security文件夹中的cacerts文件,然后将其创建为/etc/ssl/certs/java/系统cacerts文件的符号链接:

Sudo ln -s /etc/ssl/certs/java/cacerts /path/to/ downloading /java/jre/lib/security/cacerts

在Ubuntu上:

Sudo apt安装ca-certificates-java

or

Sudo apt-get install ca-certificates-java

帮我整理好了。

如果你在使用JDK9和Maven的Ubuntu上遇到这种情况,你可以添加这个JVM选项-首先检查路径是否存在:

-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts

如果文件丢失,尝试安装ca-certificates-java,就像有人指出的那样:

sudo apt install ca-certificates-java

在升级到OS X v10.9 (Mavericks)后,我使用JDK 1.7在OS X上遇到了这个确切的问题。对我来说,有效的解决方法是简单地重新安装苹果版的Java,可以在http://support.apple.com/kb/DL1572上找到。

EJP基本上回答了这个问题(我意识到这有一个公认的答案),但我只是处理了这个边缘情况,并想让我的解决方案永垂不朽。

我在托管的Jira服务器上有InvalidAlgorithmParameterException错误,我之前为仅ssl访问设置了该服务器。问题是我用PKCS#12格式设置了密钥存储库,但我的信任存储库是JKS格式。

在我的例子中,我编辑了server.xml文件,将keystoreType指定为PKCS,但是我没有指定truststoreType,因此它默认为keystoreType。明确指定truststoreType作为JKS为我解决了这个问题。