我试图在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 14.04和openjdk 11 from ppa:openjdk-r/ppa上,这对我来说是有效的:
在java中。安全性将密钥库类型更改为
keystore.type=jks
然后:
sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java
当您检查它是否工作时,请确保您使用的守护进程中没有任何旧的Java仍在运行(例如。——gradle的no-daemon选项)
这个bug很好地描述了所有内容,并将帮助您理解正在发生的事情https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631
我在网上找到的解决办法都没用,但彼得·克里恩斯(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)上的证书。
对我来说,这是由于信任存储库中缺少一个trustedCertEntry造成的。
要测试,请使用:
keytool -list -keystore keystore.jks
它给我:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
cert-alias, 31-Jul-2017, PrivateKeyEntry
即使我的PrivateKeyEntry包含一个CA,它需要单独导入:
keytool -import -alias root-ca1 -file rootca.crt -keystore keystore.jks
它导入证书,然后重新运行keytool -list -keystore keystore。JKS现在提供:
Your keystore contains 2 entries
cert-alias, 31-Jul-2017, PrivateKeyEntry,
Certificate fingerprint (SHA1): <fingerprint>
root-ca1, 04-Aug-2017, trustedCertEntry,
Certificate fingerprint (SHA1): <fingerprint>
现在它有了一个trustedCertEntry, Tomcat将成功启动。