使用keytool在密钥库中“密钥密码”的意义是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用keytool在密钥库中“密钥密码”的意义是什么相关的知识,希望对你有一定的参考价值。

我使用以下命令为我的Web应用程序生成jks。

keytool -genkey -keyalg RSA -alias my-app -validity 10800 -keysize 2048 -sigalg SHA1withRSA -keystore myapp.jks

此命令提示如下问题:

Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  GS
What is the name of your organizational unit?
  [Unknown]:  XX
What is the name of your organization?
  [Unknown]:  YY
What is the name of your City or Locality?
  [Unknown]:  ZZ
What is the name of your State or Province?
  [Unknown]:  AA
What is the two-letter country code for this unit?
  [Unknown]:  BB
Is CN=GS, OU=XX, O=YY, L=ZZ, ST=AA, C=BB correct?
  [no]:  yes

Enter key password for <my-app> //Why this password is required???
        (RETURN if same as keystore password):  

只有当密钥库密码[首次提示]和密钥密码时,Tomcat才能读取此密钥库。当我使用其他密码代替“密钥密码”时,由于密钥库文件,tomcat无法启动。 我的问题是密钥密码的意义是什么。

P.S:我看过这个link。他们在这里说:

Press RETURN when prompted for the key password (this action makes the key password the same as the KeyStore password).

如果两个密码必须相同,那么任何想法询问它两次的意义是什么?

答案

正如JavaDoc所述

提示您输入的keypass值指定要生成的私钥的密码。您始终需要此密码才能访问包含该密钥的密钥库条目。该条目不必拥有自己的密码。当系统提示您输入密钥密码时,您可以选择让它与密钥库密码相同。

密钥库可以包含多个密钥,每个密钥只能使用密码访问。因此,如果您希望将密钥密码与您正在创建的密钥库保持一致,则keytool只是为您提供一个选项。

另一答案

您可以在一个密钥库中拥有许多密钥,每个密钥都有自己的密码(或者如果您选择密钥库本身,则与密钥库本身相同)。这是你的决定,你关心密钥的安全性。

另一答案

正如@Maas已经回答的那样,keyPassword需要访问存储在KeyStore中的密钥条目。

它的发生方式是首先使用KeyStore密码来访问/解锁KeyStore,然后使用keyPassword来解密KeyStore内部的密钥条目。

通常,ssl的各种实现/使用考虑对KeyStorePassword和keyPassword使用相同的密码

这也是tomcat的情况。如果您看到文档tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html,他们已经明确声明“您的私钥密码和密钥库密码应该是相同的。如果它们不同,您将得到一个错误,就像java.io.IOException:无法恢复密钥,如Bugzilla issue 38217,其中包含对此问题的进一步参考“

enter image description here

甚至JSSE实现也希望KeyStorePassword和KeyPassword相同。

enter image description here

https://access.redhat.com/documentation/en-US/Fuse_MQ_Enterprise/7.1/html/Security_Guide/files/SSL-SysProps.html

https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#KeyManagerFactory

以上是关于使用keytool在密钥库中“密钥密码”的意义是什么的主要内容,如果未能解决你的问题,请参考以下文章

如何使用keytool列出存储在PKCS12密钥库中的证书?

GoDaddy SSL证书更新到keytool 密钥库中

密钥密码和密钥库密码使用ikeyman工具

keytool常用操作

密码技术的公开密码

图解密码技术笔记对称密码(共享密钥密码)——用相同的密钥进行加密和解密