密钥库密码应该与PKCS12证书密码相同吗?

时间:2016-09-09 05:33:31

标签: java keystore keytool pkcs12

我正在尝试使用java中的keytool导入PKCS12证书。仅当密钥库密码与证书密码相同时,它才能正常工作。是否必须为密钥库使用PKCS12证书密码?

2 个答案:

答案 0 :(得分:7)

来自documentation of keytool(仅列出与此问题相关的选项):

  

keytool -importkeystore [ -srcstorepass srcstorepass ] [ -deststorepass deststorepass ] { -srcalias srcalias { -destalias destalias } [ -srckeypass srckeypass ]}   [ -destkeypass destkeypass ] ...

     

将源密钥库中的单个条目或所有条目导入到   目的地密钥库。

     

当提供 -srcalias 选项时,该命令会导入单个   由别名标识到目标密钥库的条目。   [...]如果源条目受到a的保护   密码,然后 srckeypass 用于恢复条目。如果 srckeypass   如果未提供,则keytool命令会尝试使用 srcstorepass   恢复条目。如果未提供 srcstorepass 或是   不正确,然后提示用户输入密码。目的地   条目受 destkeypass 保护。如果未提供 destkeypass ,   然后使用源条目保护目标条目   密码。 例如,大多数第三方工具都需要 storepass   PKCS#12密钥库中的 keypass 是相同的。为了创造一个   这些工具的PKCS#12密钥库总是指定-destkeypass   与-deststorepass相同。

     

如果未提供 -srcalias 选项,则表示源中的所有条目   密钥库将导入到目标密钥库。 [...]如果源条目   受密码保护,然后使用 srcstorepass   恢复条目。如果未提供 srcstorepass 或是   不正确,然后提示用户输入密码。 [...]目的地条目是   使用源条目密码保护。

因此,是否必须使用密钥库的PKCS12证书密码取决于将尝试读取密钥库的应用程序。

答案 1 :(得分:2)

如果您依赖Java系统属性来通知JSSE有关密钥库的信息,则没有用于指定特定密钥别名或其密码的属性。在这种情况下,你没有别的选择,只能使密码相同。