创建密钥库并将证书附加到密钥库后,密钥库格式无效

时间:2012-06-11 12:25:54

标签: java openssl

我使用以下命令使用OpenSSL创建密钥库:

openssl pkcs12 -export -in mycert.crt -inkey mykey.key \
                        -out mycert.p12 -name tomcat -CAfile myCA.crt \
                        -caname root

根据documentation

现在,当我尝试使用keytool -list -v -keystore mycert.p12验证密钥库时,我收到了Invalid Keystore Exception

这是因为我使用Apache实现创建密钥库吗?

我的一个约束是,我不能使用Java keytool来创建密钥库,尽管我的Java程序正在使用密钥库进行FTPS传输。

3 个答案:

答案 0 :(得分:21)

-storetype pkcs12使用keytool选项。

keytool -list -v -keystore mycert.p12 -storetype pkcs12

默认情况下,keytool假定密钥库类型为JKS,如果不是,则keytool会失败。如果使用其他密钥库文件(示例中为.p12),则需要使用上述方法明确给出商店类型。

答案 1 :(得分:0)

我通过从我的机器中删除Java 1.7来解决这个问题。这使得Java 1.8 keytool成为唯一可用的keytool。由于Java 1.8 keytool支持pkcs12,因此该命令有效。

以下是如何删除Java 1.7 (在Windows 10操作系统上):

  • 转到Windows Settings => Apps & Features
  • 查找名称中包含Java 1.7Java 7的所有应用
  • 点击应用名称,然后选择Uninstall
  • 按照每个人的卸载向导进行操作
  • PATH
  • 中删除Java 1.7

注意:这可以在不卸载的情况下实现,只需将Java 1.8路径放在Java 1.7路径之前/之上的PATH变量中,但我没有测试过这个。

答案 2 :(得分:0)

我安装了 JDK 16。 安装 JDK 8 后,我卸载了 JDK 16

<块引用>

jdk1.8.0_281

效果很好!

使用另一种 cyrpto 格式的最新版本。