存储KeyStore密码和密钥密码的位置

问题描述 投票:0回答:2

我使用windows和linux机器通过java keytool创建java密钥库(JKS)。当我运行下面提到的keytool命令时:

keytool -genkey -alias TESTSSL -dname“cn = Test.com,ou = testlab,o = myorg,c = UK”-keyalg“RSA”-keysize 2048 -keystore TESTSSL.private.jks -validity 10 -storepass XXXXXXX

它提示输入密钥库密码和密钥密码。

问题是,我想知道密码的存储位置和形式。它是存储在密钥库文件中还是OS中的其他位置(如果是这种情况,请知道确切的位置)。

任何与此相关的信息都非常感激。

ssl ssl-certificate keystore keytool jks
2个回答
0
投票

密钥密码和密钥库密码存储在密钥库本身中。它是独立的。这样,密钥库是可移植的,并且可以发送给可以打开它的其他人(前提是他们知道密钥[store]密码)。


0
投票

请注意,您实际上是在创建密钥库的默认格式,假设在运行keytool时该文件不存在;通过Java 8,默认是JKS,但是从9开始它是PKCS12。 (命名文件something.jks不控制格式,不仅仅是命名它something.lollipop会让它成为孩子的甜蜜。)

如果您按照规定在命令行上指定-storepass whatever,则不应提示输入密钥库密码 - 至少不在该操作上;如果你再次运行keytool(重新)使用相同的文件,除非你再次在该命令行上指定它,否则会提示。同样,如果在命令行上指定-keypass whatever,根据操作需要时,它不应提示输入密钥密码。

对于JKS JCEKS和PKCS12,密码根本不存储。这样做会非常不安全。相反,密码加上'salt'(随机值)由单向“密钥导出”算法处理,以创建用于至少加密密钥库中的私钥条目的密钥,并进行验证。 (MAC)整个密钥库。用Java实现的PKCS12(弱)加密证书以及私钥; JKS和JCEKS没有。在Java中实现的PKCS12可能不支持与商店密码不同的私钥密码。

如果您在使用密钥库文件时无法提供或未提供正确的密码,则可能会失败,具体取决于您尝试执行的操作,因此您需要记住它们,并在必要时进行传输或分发它们。如果您需要在难以手动管理的规模上执行此操作,则可以使用密码管理工具 - 它可以处理所有事物的密码,而不仅仅是Java密钥库 - 来自多种来源的密码。

对于非基于文件的密钥库,如某些系统上的PKCS11或Windows上的OS提供的商店,密码的实现和使用方式 - 如果有的话 - 取决于该密钥库的详细信息,尽管通常存储密码做坏或坏做法。

© www.soinside.com 2019 - 2024. All rights reserved.