导入证书到 cacerts 时出现权限错误

6

我需要将一些Maven仓库的证书导入到全局密钥库中。证书文件名为maven.crt,因此我运行的命令是

keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -trustcacerts -alias maven -file maven.crt

它要求我输入密码,然后问我是否信任证书,我回答是。 这是最终输出结果。

Certificate was added to keystore
keytool error: java.io.FileNotFoundException: /usr/java/jdk1.7.0_40/bin/java/jre/lib/security/cacerts (Not a directory)

我以root用户身份运行了这个命令,所以我不知道为什么在这里会收到权限错误。
2个回答

13

您的路径是错误的。cacerts文件位于jdk_directory/jre/lib/security中。

请尝试以下方法:

keytool -import -keystore /usr/java/jdk1.7.0_40/jre/lib/security/cacerts -trustcacerts -alias maven -file maven.crt

...尴尬!谢谢这个。 - user2847458
1
@Ernestas 这是正确的路径吗 /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/security? - ARK
1
@AkshayrajKore 我不用 Mac,但是这个看起来有点奇怪... 为什么你的 JDK 目录里有 /Contents/Home? - Ernestas Kardzys
1
@ErnestasKardzys 在Mac上似乎就是这样结构的。对我来说,使用 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/security/cacerts 就可以正常工作了。 - AndyO
我在Ubuntu上遇到了获取路径的问题; echo $(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));') 很好地解决了获取主目录的问题 然后只需在末尾添加/lib/security/cacerts :) - Chris McKee

1
  1. 使用sudo chmod -R 777 /jdk1.8.0_31/jre/lib/security/cacerts命令,赋予文件夹读写权限。

  2. 使用keytool -import命令将证书文件(路径为pathToCertifcate.crt)导入到密钥库中,并指定别名(-alias)和证书别名(-aliasCertificate),密钥库路径为/jdk1.8.0_31/jre/lib/security/cacerts。

  3. 使用sudo chmod -R 644 java/jdk1.8.0_31/jre/lib/security/cacerts命令,设置文件夹只读权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接