Java的keytool
有一个名为-keypass
的参数,它允许您设置一个(单独的)密码来保护您的私钥,以及整个密钥存储所使用的密码。
根据文件:
-keypass
的值是一个密码,用于保护生成的密钥对的私钥。如果没有提供密码,则提示用户输入密码。如果在提示符下按返回键,则密钥密码设置为与密钥存储密码相同的密码。-keypass
值必须至少有六个字符。
但是,当我在调用此命令时遗漏密码时,我似乎完全没有收到提示,至少在将密码与-genkeypair
结合使用以生成RSA密钥对时是如此。相反,我只是得到了一般的帮助页。如果我使用""
强制使用“空”密码,那么它(正确)告诉我密码至少应该是6个字符。
是否有一种方法可以强迫keytool
提示特定密钥的密码,而不是根据-genkeypair
的文档在命令行中提供密码?
我在Java 11 LTS上测试了这一点:
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
-keypass
或
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
-keypass ""
两者似乎都不起作用;正如您所看到的,我已经将-keypass
参数移到了末尾,因此它不能吞食一个参数作为密码。
发布于 2021-03-09 19:44:11
默认的密钥库类型为PKCS12
,它总是假定密钥存储库密码和密钥密码是相同的,因此没有提示您输入它(文档)。
如果您需要使用密钥密码来满足您的要求,您可以使用其他密钥存储类型,如jks
或jceks
。
注意:如果您正在使用jks或jceks,java将向您显示一条警告消息:
JKS密钥存储库使用一种专有格式。建议迁移到PKCS12,这是一个行业标准格式。
如果您键入:
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore double.pfx -storepass Storepass -keypass Keypass
您将得到以下警告:
Warning: Different store and key passwords not supported for PKCS12 KeyStores.
请注意,PKCS#12密钥存储本身-- do支持多个密码:它们对多个部分(密钥、证书)和KeyBag
等有独立的派生。只是缺少了Java。我在解析几个密钥存储并查看格式后发现了这一点。
https://stackoverflow.com/questions/66492058
复制相似问题