2016-09-09 115 views
2

我想在java中使用keytool导入PKCS12证书。只有密钥库密码与证书密码相同时,它才能正常工作。密钥库也必须使用PKCS12证书密码吗?密钥库密码是否应与PKCS12证书密码相同?

+0

当密钥库和证书密码不匹配时,您会看到什么错误? – Leon

+0

没有明确的错误抛出。证书得到安装,但我的应用程序不会出现。 – user5478656

回答

4

documentation of keytool(有关这个问题的唯一选项列出):

密钥工具-importkeystore [-srcstorepasssrcstorepass] [-deststorepassdeststorepass] {- srcaliassrcalias {-destalias个destalias} [-srckeypasssrckeypass]} [-destkeypassdestkeypass] ...

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

当提供-srcalias选项时,该命令将别名标识的单个条目导入到目标密钥库。 [...]如果源条目受密码 保护,则使用srckeypass恢复条目。如果没有提供srckeypass ,则keytool命令会尝试使用srcstorepass 来恢复条目。如果srcstorepass未提供,或者 不正确,则将提示用户输入密码。目的地 条目受destkeypass保护。如果没有提供destkeypass,则 那么目的地条目受到源条目 密码的保护。 例如,大多数第三方工具需要Storepass用于 关键通过在PKCS#12密钥库是相同的。为了为这些工具创建一个 PKCS#12密钥存储,总是将-destkeypass指定为 与-deststorepass相同。

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

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

0

如果您依赖Java系统属性来通知JSSE密钥库,则没有用于指定特定密钥别名或密码的属性。在这种情况下,您别无选择,只能使密码保持不变。