6 java key certificate jks keytool
我被要求根据我们创建的证书创建一个jks密钥库。我已经读了一些关于该主题的内容,但是我仍然对以下几项感到困惑:
证书的私钥是否应该存储在.jks密钥库中?
如果是,请在哪里输入?使用keytool,不需要一个即可创建jks文件。
如果不是-jks文件的目的是什么?为什么我的应用程序需要它,而不仅仅是直接读取证书?如果keytool仅包含公钥,为什么keytool要求密码才能创建jks?
密钥存储的目的是使用基于密码的算法来保护加密密钥的私密性和完整性。隐私意味着密钥是秘密的;它们只能由知道密码的人使用;这对于私钥和秘密密钥很有用。完整性是指知道密码的人可以检测到密钥的更改;这对于公共密钥和秘密密钥很有用。
是否应包含私钥取决于您要执行的操作。例如,如果要为服务器创建密钥库,以便它可以向客户端进行身份验证,则它应包含私钥。如果你创建了一个自签名的证书,并希望给客户一个密钥存储,以便他们可以验证你的服务,那么它应该不包含私钥。
如果您有一个预先存在的密钥对,并且想要将其导入到JKS格式的密钥存储区,最简单的方法可能是使用OpenSSL创建PKCS#12格式的密钥存储区,然后使用keytool将其转换为JKS密钥存储区。通常,keytool期望自己进行密钥对生成,因此私钥将从一开始就存储在那里。
在使用公钥或证书对消息进行加密或签名之前,应先对其进行验证。否则,攻击者可以用自己拥有的密钥替换密钥,然后充当中间人。如果您只是从文件中读取一个公钥,则不知道它确实属于您的预期收件人。但是,如果您将带有公用密钥的基于密码的消息身份验证代码存储在其中,则可以确保它未被篡改。
证书的私钥是否应该存储在 .jks keystone 中?
是的,如果您拥有该证书并且它存储在那里。
如果是 - 在哪里输入?使用 keytool,创建 jks 文件不需要 keytool。
这是因为您还可以将其用作信任库,其中仅包含受信任的证书。
要获取其中的私钥,您需要首先使用 将其及其证书转换为 PKCS#12 文件openssl,如此处的许多问题中所回答的那样。
如果不是 - jks 文件的用途是什么?为什么我的应用程序需要它而不是直接读取证书?
因为你的应用程序还需要证书的私钥。
如果 keytool 只包含公钥,为什么它需要密码来创建 jks?
密钥库有密码,因为它是与安全相关的实体。