我正在尝试使用java中的keytool导入PKCS12证书。仅当密钥库密码与证书密码相同时,它才能正常工作。是否必须为密钥库使用PKCS12证书密码?
答案 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有关密钥库的信息,则没有用于指定特定密钥别名或其密码的属性。在这种情况下,你没有别的选择,只能使密码相同。