【问题标题】:Keytool isn't asking to set key password (keypass)Keytool 不要求设置密钥密码 (keypass)
【发布时间】:2021-05-04 23:39:50
【问题描述】:

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

keytool -genkey -alias demospring -keyalg RSA -keystore demospring.jks -keysize 2048

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

【问题讨论】:

  • 您使用的是什么版本的 Java?
  • @always_a_rookie Java 15

标签: java spring-security keystore keytool jks


【解决方案1】:

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

这两种格式在keypass 方面的区别在于,JKS 可以设置不同的密钥库密码(保护密钥库的密码)和密钥密码(保护密钥的第二个密码,可以相同)作为密钥库),但对于pkcs12,它们都必须相同。

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


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

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

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

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

【讨论】: