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


当前回答

郑重声明,这里没有一个答案对我有用。由于这个错误,我的Gradle构建开始神秘地失败,无法从Maven中心获取特定POM文件的HEAD。

结果发现,我将JAVA_HOME设置为我自己构建的OpenJDK,这是我为调试javac问题而构建的。将它设置回安装在我系统上的JDK就可以解决这个问题。

其他回答

在我的例子中,这个问题的根本原因是空的信任库(它是应用程序服务器信任库)。 当我添加任何虚拟x.509证书时,停止抛出此错误。

将证书添加到truststore vis keytool中

keytool -import -alias dummy -keystore <path to keystore> -storepass <truststore password if any>

我在网上找到的解决办法都没用,但彼得·克里恩斯(Peter Kriens)的答案的修改版本似乎管用。

首先运行/usr/ libeexe /java_home找到Java文件夹。对我来说,它是1.6.0。jdk版本。然后转到它的lib/security子文件夹(对我来说/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security)。

然后删除cacerts文件(如果已经有),然后使用sudo find / name "cacerts"在系统中搜索。它为我找到了多个项目,在我安装的Xcode或其他应用程序版本中,也在/Library/Internet plug - in /JavaAppletPlugin中。plugin/Contents/Home/lib/security/cacerts。

使用该文件并对其进行符号链接(在之前的Java文件夹中),sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin. exe "。plugin/Contents/Home/lib/security/cacerts”,它应该可以工作。

我两者都有——Java从苹果的2017-001下载(https://support.apple.com/kb/dl1572 -我假设这是正确的证书来源)和Oracle的安装在Mac OS X v10.12 (Sierra)上的证书。

另一个原因是它实际上是一个有效的错误。一些恶意的Wi-Fi热点会破坏证书,并对你进行中间人攻击,谁知道你会做什么(逃跑!)

一些大的雇主也会做同样的事情,特别是在敏感的网络区域,这样他们就可以监控所有的加密流量(从最终用户的角度来看不是很好,但这样做可能有很好的理由)。

我在Linux上的Java 9.0.1上有这个错误消息。这是由于JDK的一个已知错误,其中。tar.gz二进制包中的cacerts文件是空的(从http://jdk.java.net/9/下载)。

参见JDK 9.0.1版本说明的“已知问题”段落,说“TLS在OpenJDK 9上默认不工作”。

在Debian/Ubuntu(可能还有其他衍生版本)上,一个简单的解决方法是用"ca-certificates-java"包中的cacerts文件替换cacerts文件:

sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

在Red Hat Linux/CentOS上,你可以从“ca-certificates”包中做同样的事情:

sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

在升级到OS X v10.9 (Mavericks)后,我遇到了很多安全问题:

亚马逊AWS的SSL问题 未使用Maven和Eclipse验证Peer trustAnchors参数必须非空

我应用了这个Java更新,它解决了我所有的问题:http://support.apple.com/kb/DL1572?viewlocale=en_US