【问题标题】: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
spring-security
keystore
keytool
jks
【解决方案1】:
从 Java 版本 9 开始,它已将默认的 JKS 密钥库转换为 PKCS12 (read here)。 JKS 是 java 的专有格式,而 PKCS12 更像是一种标准格式(其他各种应用程序都可以理解)。
这两种格式在keypass 方面的区别在于,JKS 可以设置不同的密钥库密码(保护密钥库的密码)和密钥密码(保护密钥的第二个密码,可以相同)作为密钥库),但对于pkcs12,它们都必须相同。
由于storepass和keypass相同,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。