当你在谷歌上搜索这个异常:java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
时,会出现多个结果。然而,没有确定的解决方案,只有猜测。
当我尝试通过SSL打开连接时,问题就出现了(至少在我的例子中是这样)。它在我的windows机器上运行得很好,但是当我把它部署到linux机器(安装了sun的jre )上时,它失败了,出现了上面的异常。
问题在于,由于某种原因,JRE的默认信任库是空的(大小只有32字节,而在windows上是80kb )。
当我将我的jre/lib/security/cacerts
文件从windows复制到linux时,它工作得很好。
问题是-为什么linux jre有一个空的信任库?
请注意,这种情况发生在使用Amazon的亚马逊EC2实例上,因此可能是由于某些亚马逊策略(我认为java是预先安装的,但我不确定)
发布于 2011-01-23 22:43:50
用于linux的标准Sun JDK在指定目录中的所有文件的cacerts和整体设置都是完全正确的。问题出在你使用的安装上。
发布于 2015-03-28 11:20:19
我在Ubuntu中遇到了这个错误。我看到/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts是一个指向/etc/ssl/certs/java/cacerts的断开链接。这就引出了这个bug:https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/983302 ca-certificates java的自述文件最终显示了实际的修复:
跑
update-ca-certificates -f
apt-get install ca-certificates-java不适合我。它只是将其标记为手动安装。
发布于 2012-07-25 19:58:18
我通过在密钥库中放置一个虚拟证书来避免这个错误( OSX 10.5.8上的Java 1.6.0 ),比如
keytool -genkey -alias foo -keystore cacerts -dname cn=test -storepass changeit -keypass changeit
当然,问题应该是“为什么java不能处理空的trustStore?”
https://stackoverflow.com/questions/4764611
复制相似问题