首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java的keytool不提示输入密钥密码

Java的keytool不提示输入密钥密码
EN

Stack Overflow用户
提问于 2021-03-05 11:48:52
回答 1查看 2.3K关注 0票数 4

Java的keytool有一个名为-keypass的参数,它允许您设置一个(单独的)密码来保护您的私钥,以及整个密钥存储所使用的密码。

根据文件:

-keypass的值是一个密码,用于保护生成的密钥对的私钥。如果没有提供密码,则提示用户输入密码。如果在提示符下按返回键,则密钥密码设置为与密钥存储密码相同的密码。-keypass值必须至少有六个字符。

但是,当我在调用此命令时遗漏密码时,我似乎完全没有收到提示,至少在将密码与-genkeypair结合使用以生成RSA密钥对时是如此。相反,我只是得到了一般的帮助页。如果我使用""强制使用“空”密码,那么它(正确)告诉我密码至少应该是6个字符。

是否有一种方法可以强迫keytool提示特定密钥的密码,而不是根据-genkeypair的文档在命令行中提供密码?

我在Java 11 LTS上测试了这一点:

代码语言:javascript
运行
复制
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
        -keypass

代码语言:javascript
运行
复制
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
        -keypass ""

两者似乎都不起作用;正如您所看到的,我已经将-keypass参数移到了末尾,因此它不能吞食一个参数作为密码。

EN

Stack Overflow用户

回答已采纳

发布于 2021-03-09 19:44:11

默认的密钥库类型为PKCS12,它总是假定密钥存储库密码和密钥密码是相同的,因此没有提示您输入它(文档)。

如果您需要使用密钥密码来满足您的要求,您可以使用其他密钥存储类型,如jksjceks

注意:如果您正在使用jks或jceks,java将向您显示一条警告消息:

JKS密钥存储库使用一种专有格式。建议迁移到PKCS12,这是一个行业标准格式。

如果您键入:

代码语言:javascript
运行
复制
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore double.pfx -storepass Storepass -keypass Keypass

您将得到以下警告:

代码语言:javascript
运行
复制
Warning:  Different store and key passwords not supported for PKCS12 KeyStores.

请注意,PKCS#12密钥存储本身-- do支持多个密码:它们对多个部分(密钥、证书)和KeyBag等有独立的派生。只是缺少了Java。我在解析几个密钥存储并查看格式后发现了这一点。

票数 6
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66492058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档