4

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

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

根据文档

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

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

我还有一个限制是,尽管我的 Java 程序正在使用密钥库进行 FTPS 传输,但我不能使用 Java 密钥工具来创建密钥库。

4

3 回答 3

26

-storetype pkcs12选项与keytool.

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

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

于 2012-06-11T13:24:39.087 回答
0

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

以下是删除 Java 1.7(在 Windows 10 操作系统上)的方法:

  • Windows Settings=>Apps & Features
  • 查找包含Java 1.7Java 7以其名称的所有应用程序
  • 点击应用名称并选择Uninstall
  • 按照每个人的卸载向导
  • 删除 Java 1.7PATH

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

于 2018-05-21T10:06:30.967 回答
0

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

jdk1.8.0_281

那行得通!

最后一个版本使用另一种 cyrpto 格式。

于 2021-03-22T08:10:28.023 回答