密钥库的目的是什么

rsa*_*bir 4 ssl keystore

通常 cacert 用作信任库,这意味着我们放置其他服务器的证书的基础,以便我们对它们进行身份验证(只有当它们使用与信任库中相同的证书时,我们才信任来自这些服务器的连接)。

而密钥库通常用于存储密钥(当我们充当服务器时会使用它们)。

但问题是我在互联网命令中发现也用于在密钥库中添加证书,并且 keytool 中没有用于在密钥库中添加私钥的基本功能。

所以,我开始怀疑我是否确实误解了密钥库的目的及其作用。谁能告诉我我是否错了?

alw*_*arn 5

从技术上讲,KeyStore 和 TrustStore 是相同类型的。它们只是根据它们包含的内容服务于不同的目的。

AKeyStore只是一个数据库或存储库或证书或秘密密钥或密钥对的集合。当 KeyStore 仅包含证书时,您将其称为 TrustStore。

当您还拥有与其对应的证书链(密钥对或非对称密钥)相关联的私钥时,它被称为密钥库。

JCE 提供程序支持不同类型的 KeyStore:

  • JKS (Java Key Store) --> 当你只有证书时,它是一个 TrustStore。当您还有与证书链关联的私钥时,它就是一个 KeyStore。
  • JCEKS(Java 增强型密钥存储) --> 这些可以存储 JKS 可以存储的内容以及额外的密钥(对称密钥)。您不能在 JKS 类型的 KeyStore 中存储密钥。
  • PKCS12 --> 这就像一个 KeyStore,但是一个不同的类型叫做 PKCS12。这些可以存储私钥及其证书链。但标准是只有 1 个条目,即 1 个私钥及其相关的证书链。

它们的用途可能很广泛,但通常用于以下目的:

  • JKS - 保护您的 Web 服务器。
  • JCEKS - 存储您的加密密钥(对称),也可用于保护 Web 服务器。
  • PKCS12 - 为双向 SSL 设置 Web 服务器时,它要求客户端对服务器进行身份验证。在这些情况下,客户端将生成一个密钥对,并从中生成一个 CSR (PKCS10) 并由证书颁发机构 (CA) 对其进行签名。然后为客户端提供一个证书链,客户端将其与 PKCS12 KeyStore 中的 PrivateKey 相关联。然后可以使用它来建立 SSL 连接。