Keytool的 -storepass 和 -keypass -- 为什么需要2个密码?

37

我了解-keypass选项是用于“密钥的密码”,而-storepass选项是用于“密钥库的密码”。

然而,我不明白为什么需要两个密码。

有哪些情况需要两个密码:一个用于存储(在我的情况下为文件),另一个用于密钥。


您的 storepass 密码用于验证密钥库/信任库的完整性。您的 keypass 密码实际上是用来解密私钥或秘密密钥的。是的,您仍然可以在不输入任何密码的情况下“查看”公共证书,但是......您将无法验证它们的完整性。那么这有什么意义呢? - ManRow
另一种思考方式是,storepass 就像 "keystore/truststore" MAC(消息认证)的隐藏对称密钥,而 keypass 就像实际的 解密密钥。因此,后者实际上保护存储在内部的私有/秘密密钥。 - ManRow
2个回答

33

这是因为Java处理密钥库的方式,所以这不是Android特定的问题。但原因是访问诸如添加/查看信任关系之类的存储是与创建和签署密钥/证书分开的任务。

简而言之,您可能信任某人查看/更新您的密钥库,但不允许使用您在密钥库中存储的密钥进行签名。此外,密钥可以存储在多个密钥库中,并且您希望单独锁定您的密钥。


谢谢。起初我认为这个双密码功能对于团队非常有用,但对于单人开发“团队”并没有什么区别。然后我读了你回答的最后一句话,意识到它对单个开发者也很有用。再次感谢(将很快接受)。 - ef2011

19

Keytool使用storepass和keypass来完成不同的任务。

storepass用于访问密钥库。

keypass用于访问特定密钥对的私钥。

然而,除非是用于测试目的或在安全系统上操作,否则不应在命令行或脚本中指定密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接