Keytool 不要求设置密钥密码 (keypass)

Dil*_*Dev 3 java keystore spring-security jks keytool

我尝试在 C:\Program Files\Java\jdk15.x.x_x\bin 中使用以下命令创建 keytool:

keytool -genkey -alias demospring -keyalg RSA -keystore demospring.jks -keysize 2048
Run Code Online (Sandbox Code Playgroud)

系统要求我创建密码,但不是别名密码。我错过了什么吗?我对这个概念还很陌生。感谢您提前提供任何帮助!

alw*_*arn 6

从 Java 版本 9 开始,它已将默认JKS密钥库转换为PKCS12请阅读此处)。JKS 是 java 的专有格式,而 PKCS12 更多的是一种标准格式(各种其他应用程序都可以理解)。

这两种格式之间的区别在于keypassJKS您可以设置不同的密钥库密码(保护密钥库的密码)和密钥密码(保护密钥的第二个密码,可以与密钥库相同),但是对于pkcs12,它们都必须相同。

由于storepasskeypass是相同的,keytool不会提示 keypass,它只会使用 storepass。创建密钥库后,如果您使用-list命令查看密钥库的详细信息,它将显示其格式。


如果您传入密钥库keypass的参数PKCS12,keytool 将向您显示以下警告:

警告:PKCS12 KeyStore 不支持不同的存储密码和密钥密码。忽略用户指定的 -keypass 值。

您可以使用参数更改密钥库类型格式-storetype,但如果您使用 storetype as JKS,keytool 将向您显示此警告:

警告:JKS 密钥库使用专有格式。建议使用“keytool -importkeystore -srckeystore demospring.jks -destkeystore demospring.jks -deststoretype pkcs12”迁移到 PKCS12,这是一种行业标准格式。