keytool要求密码读取java证书ubuntu 18.04

时间:2018-06-11 13:04:03

标签: java ubuntu-18.04

我有一个全新安装的ubuntu 18.04。我的构建(例如Maven和Gradle)访问存储库https时遇到问题,它显示的消息是:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

当我尝试使用以下命令从我的密钥库访问证书时:

keytool -list -keystore /etc/ssl/certs/java/cacerts

我收到密码提示,这不是问题,但如果我只是按Enter而不输入密码它没有显示任何条目。

如果我输入密码,所有证书都会正常显示。我必须做的是在我的所有java应用程序中添加以下系统道具:

javax.net.ssl.trustStorePassword=changeit

然后一切正常。我做错了什么?

编辑: 这是cacerts现在的权限:-rw-r--r-- 1 root root 167K jun 8 11:21 /etc/ssl/certs/java/cacerts

所以每个人都应该阅读。如果我尝试使用没有密码的列表: ```keytool -list -keystore / etc / ssl / certs / java / cacerts✔30810:27:15 输入密钥库密码:

*************警告警告警告***************** *存储在密钥库中的信息的完整性* *尚未经过验证!为了验证其完整性,* *您必须提供密钥库密码。 * *************警告警告警告*****************

密钥库类型:JKS 密钥库提供商:SUN

您的密钥库包含0个条目

用密码:keytool -list -keystore / etc / ssl / certs / java / cacerts✔31010:36:33 输入密钥库密码:
密钥库类型:JKS 密钥库提供商:SUN

您的密钥库包含134个条目

1 个答案:

答案 0 :(得分:0)

  

读取应该是无密码的,只有写操作才需要密码

您误解了密码的用途。密码(实际上)是密钥库的解密密钥。它可以防止未经授权的读取,无论文件系统权限如何。

如果您希望/需要允许读取而不使用密码但是防止写入,则需要使用文件系统权限。以下Q& A说明如何删除默认密码:

这里解释了为什么控制写入(而不是读取)的密码无效。

假设可信密钥库在没有密码的情况下可读。然后,用户可以执行以下操作:

  • 阅读密钥库中的密钥
  • 创建一个新的(空)密钥库
  • 将密钥写入新密钥库
  • 重命名新密钥库,以便替换旧密钥库。

这可以使用自定义Java应用程序或(可能)标准keytool实用程序和mv命令来完成。

阻止此操作的唯一方法是阻止应用程序(或用户)使用新的通过文件系统权限替换旧的密钥库。如果你不能这样做(例如因为用户具有管理员级访问权限),那么没有没有安全漏洞的解决方案。