我使用以下命令使用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 keytool来创建密钥库,尽管我的Java程序正在使用密钥库进行FTPS传输。
答案 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.7
或Java 7
的所有应用Uninstall
PATH
注意:这可以在不卸载的情况下实现,只需将Java 1.8路径放在Java 1.7路径之前/之上的PATH
变量中,但我没有测试过这个。
答案 2 :(得分:0)
我安装了 JDK 16。 安装 JDK 8 后,我卸载了 JDK 16
<块引用>jdk1.8.0_281
效果很好!
使用另一种 cyrpto 格式的最新版本。