我有一个 .crt 文件用于更新运行 Tomcat 5.5 的服务器。如果我运行:
keytool - import -alias tomcat -keystore tomcat.ks - trustcacerts -file website.net.crt
我收到以下错误:
keytool error: gnu.javax.crypto.keyring.MalformedKeyringException: incorrect magic
顺便说一句,密钥库文件的默认密码是 changeit,我不确定为什么它不接受它
答案1
我们的 ssl.com 证书也遇到了同样的问题,但那里的支持人员非常乐于助人,他们告诉我们,我们的服务器上有多个版本的 Java,我们需要从我们正在使用的版本中明确调用 keytool 应用程序以避免冲突。例如,在我们的服务器上:
代替
keytool - import -alias tomcat -keystore tomcat.ks - trustcacerts -file website.net.crt
我们会使用
/usr/local/jdk/keytool - import -alias tomcat -keystore tomcat.ks - trustcacerts -file website.net.crt
答案2
我认为它表示您的密钥库已损坏。您可以对密钥库进行任何操作来查看它是否损坏?
答案3
您的密钥库需要包含的不仅仅是您自己的证书信息;它还需要将证书链接到您的证书颁发机构 (CA)。对于我来说,我的密钥库中最终有四个条目,其中只有一个是特定于我的。我刚刚为我的 GoDaddy 证书执行了此操作;这些是我输入的命令:
>keytool -import -alias root -keystore tomcat.sat.keystore -tr ustcacerts -file valicert_class2_root.crt
Enter keystore password: PASSWORD
Certificate already exists in system-wide CA keystore under alias <valicertclass2ca> Do you still want to add it to your own keystore? [no]: yes
Certificate was added to keystore
>keytool -import -alias cross -keystore tomcat.sat.keystore -trustcacerts -file gd_cross_intermediate.crt
Enter keystore password: PASSWORD
Certificate was added to keystore
>keytool -import -alias intermed -keystore tomcat.sat.keystore -trustcacerts -file gd_intermediate.crt
Enter keystore password: PASSWORD
Certificate was added to keystore
>keytool -import -alias tomcat -keystore tomcat.sat.keystore -trustcacerts -file loxpress.com.crt
Enter keystore password: PASSWORD
Certificate reply was installed in keystore
答案4
我认为您运行的是错误的 keytool。JDK 附带的程序不使用该类。您是否安装了 GNU CLASSPATH?如果是,请将其删除。它不是 Java,只是一个拙劣且非常片面的模仿。然后使用原始密钥库重复所有操作。任何由错误的 keytool 创建的内容都应丢弃。