无法将证书导入到cacerts

31

我的要求是将用于Maven存储库的证书导入全局密钥库。

证书文件名为maven-cacert.cer。

我正在使用来自C:\ Program Files \ Java \ jdk1.6.0_20 \ bin \ cmd以下命令:

keytool -importcert -trustcacerts -alias c:\maven-cacert.cer -file c:\maven-cacert.cer.der -keystore $JAVA_HOME\jre\lib\security\cacerts

C目录中有maven-cacert.cer文件。

按下回车后,它会要求输入密码,然后在输入密码之后,会显示如下信息:

keytool error: java.io.FileNotFoundException: $JAVA_HOME\jre\lib\security\cacerts (The system cannot find the path specified

我也尝试过

   keytool -importcert -trustcacerts -alias c:\maven-cacert.cer -file c:\maven- cacert.cer.der -keystore \usr\java/jdk1.6.0_20/bin/java\jre\lib\security\cacerts

但是我得到了相同的输出。

请帮忙看看我的命令出了什么问题,因为 cacerts 文件在 $JAVA_HOME\jre\lib\security\ 目录下。


1
$JAVA_HOME的值是多少? - Scary Wombat
C:\Program Files\Java\jdk1.6.0_20\ - Neha Shukla
不是在Windows上,看看@Quincy的答案。 - Scary Wombat
7个回答

43

尝试使用"%JAVA_HOME%\jre\lib\security\cacerts"


现在它没有要求密码并且出现了keytool错误:java.lang.RuntimeException:使用错误,Files\Java\jdk1.6.0_20\jre\lib\security\cacerts不是合法的命令。 - Neha Shukla
4
尝试在它周围添加双引号。 - Quincy

29
如果您使用的是OpenJDK,那么cacerts路径将不会在"%JAVA_HOME%"/jre/lib/security/cacerts中可用,而是在"%JAVA_HOME%"/lib/security/cacerts中可用。

8

keytool -importcert -trustcacerts -alias mycert -file c:\maven-cacert.cer.der -keystore "%JAVA_HOME%"\jre\lib\security\cacerts

您还遇到了别名的问题。它是一个名称,而不是一个文件。您需要引用"%JAVA_HOME%",因为它内部有一个空格。


5
使用以下命令将证书导入cacerts中:
  1. 以管理员身份运行命令提示符
  2. cd C:\Program Files\Java\jdk1.6.0_45\jre\bin
  3. keytool -import -trustcacerts -file "certpath\certname.cer" -alias "cert_alias" -keystore "%JAVA_HOME%"/jre/lib/security/cacerts
  4. 要查看证书,请使用keytool -list -keystore "%JAVA_HOME%"/jre/lib/security/cacerts -alias cert_alias

2

由于某些原因,我认为我的系统没有定义JAVA_HOME。所以我只使用了完整路径来运行命令。如果我是从桌面文件夹运行命令,那么我的完整命令如下:

"C:\Program Files\Java\jre1.8.0_77\bin\keytool" -import -alias fiddlercert -file fiddlerRoot.cer -keystore "C:\Program Files\Java\jre1.8.0_77\lib\security\cacerts" -storepass changeit

1

你的操作系统是什么?如果你使用的是Windows系统,可以尝试将$JAVA_HOME替换为%JAVA_HOME%,然后查看效果如何。

谢谢, Anuj


从问题中很明显可以看出,OP正在使用Windows机器。 - Tim
谢谢大家。作为这个网站的新手,能够得到像你们这样的前辈的指导真的很有帮助。我会注意的。 - user3679345
双引号将%JAVA_HOME%括起来对我很有用。"%JAVA_HOME%"/lib/security/cacerts - Vibhor Dube

1

我在Windows的命令提示符中尝试了以下命令,最终它成功了:

"%JAVA_HOME%"\bin\keytool.exe -import -trustcacerts -alias *Certificate filename* -file *full path of certificate location ending with certificatename* -keystore "%JAVA_HOME%"\lib\security\cacerts

谢谢,这个是唯一一个能帮我解决问题的! - FelipeM

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