首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.security.InvalidAlgorithmParameterException:在Linux上,trustAnchors参数必须为非空,或者为什么默认信任存储区为空

java.security.InvalidAlgorithmParameterException:在Linux上,trustAnchors参数必须为非空,或者为什么默认信任存储区为空
EN

Stack Overflow用户
提问于 2011-01-22 06:44:09
回答 11查看 248.6K关注 0票数 84

当你在谷歌上搜索这个异常: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是预先安装的,但我不确定)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-01-23 22:43:50

用于linux的标准Sun JDK在指定目录中的所有文件的cacerts和整体设置都是完全正确的。问题出在你使用的安装上。

票数 27
EN

Stack Overflow用户

发布于 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不适合我。它只是将其标记为手动安装。

票数 105
EN

Stack Overflow用户

发布于 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?”

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4764611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档