【问题标题】:Import StartCom CA certificates in Windows JRE在 Windows JRE 中导入 StartCom CA 证书
【发布时间】:2011-05-17 04:55:06
【问题描述】:

我有一个 Java 应用程序访问使用 StartCom SSL 证书的服务。为此,我需要将 StartCom CA 证书添加到 Java 的信任库中,因为默认情况下它们还不存在。我已经使用这些命令在 linux 上成功完成了这项工作

sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca -file ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class1 -file sub.class1.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class2 -file sub.class2.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class3 -file sub.class3.server.ca.crt
sudo keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class4 -file sub.class4.server.ca.crt

(来自this script

但是,相同的命令(经过适当调整)在 Windows 上不起作用。我明白了:

keytool error: java.lang.RuntimeException: Usage error, trustcacerts is not a legal command

如何让它发挥作用?

【问题讨论】:

  • 嗨,我仍然收到错误..如何解决它。苛刻的拉瓦尔。
  • 您忘记提及在 Windows 上通常有两个 Java 密钥存储:一个用于 JDK,另一个用于C:\Program Files 下的公共 JRE。在这种情况下,您已将证书添加到两个商店。

标签: java security certificate keystore truststore


【解决方案1】:

在 Mac OS X Mavericks 10.9 上,我这样做了:

我总是创建一个稍后删除的 tmp 目录,但你不必这样做:

mkdir ~/tmp
cd ~/tmp

然后下载证书:

curl http://www.startssl.com/certs/ca.crt -O
curl http://www.startssl.com/certs/sub.class1.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class2.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class3.server.ca.crt -O
curl http://www.startssl.com/certs/sub.class4.server.ca.crt -O

让你的 Java 回家:

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

使用keytool安装:

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca -file ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -noprompt -alias startcom.ca.sub.class1 -file sub.class1.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class2 -file sub.class2.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class3 -file sub.class3.server.ca.crt

sudo keytool -import -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/securitycacerts -storepass changeit -noprompt -alias startcom.ca.sub.class4 -file sub.class4.server.ca.crt

【讨论】:

    【解决方案2】:

    是的,-trustcacerts 是正确的语法。

    但要使链接脚本在 Cygwin 下运行,您需要从所有 keytool 行中删除 sudo - sudo 在 Cygwin 中不可用。

    【讨论】:

      【解决方案3】:

      这是一个简单的错字。在转换命令时,我忘记了“trustcacerts”之前的破折号。 :(

      【讨论】:

        【解决方案4】:

        删除-trustcacerts

        【讨论】:

          猜你喜欢
          • 2021-11-13
          • 2015-01-09
          • 2012-07-19
          • 2012-05-10
          • 2016-03-23
          • 2014-02-08
          • 2019-05-12
          • 2020-03-31
          • 2020-06-15
          相关资源
          最近更新 更多