Maa*_*wes 4 java passwords prompt keystore keytool
Javakeytool有一个名为 的参数-keypass,除了用于整个密钥存储的密码之外,它还允许您设置一个(单独的)密码来保护您的私钥。
根据文档:
的值
-keypass是用于保护生成的密钥对的私钥的密码。如果未提供密码,则会提示用户输入密码。如果在提示时按 Return 键,则密钥密码将设置为与密钥库密码相同的密码。该-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
Run Code Online (Sandbox Code Playgroud)
或者
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
-keypass ""
Run Code Online (Sandbox Code Playgroud)
两者似乎都不起作用;如您所见,我已经将-keypass参数移到了末尾,因此它无法将参数作为密码吞噬。
alw*_*arn 11
Java 11 的默认密钥库类型是PKCS12,始终假定密钥库密码和密钥密码相同,因此不会提示您输入它(文档)
如果您需要使用密钥密码来满足您的要求,您可以使用其他密钥库类型,例如jks或jceks。
注意:如果您使用 jks 或 jceks,java 将向您显示一条警告消息:
JKS 密钥库使用专有格式。建议迁移到 PKCS12,这是行业标准格式
如果您输入:
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore double.pfx -storepass Storepass -keypass Keypass
Run Code Online (Sandbox Code Playgroud)
您将收到以下警告:
Warning: Different store and key passwords not supported for PKCS12 KeyStores.
Run Code Online (Sandbox Code Playgroud)
请注意,PKCS#12 密钥存储本身确实支持多个密码:它们具有多个部分(密钥、证书)等的单独派生KeyBag。只是缺少Java支持。我在解析几个密钥存储并查看格式后发现了这一点。
| 归档时间: |
|
| 查看次数: |
4062 次 |
| 最近记录: |