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

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

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

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

最佳答案

从技术上讲,KeyStore 和 TrustStore 是相同类型的。它们只是根据它们包含的内容服务于不同的目的。
KeyStore 只是一个数据库或存储库或证书或 key 或 key 对的集合。当 KeyStore 仅包含证书时,您将其称为 TrustStore。

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

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

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

  • 它们的用途可能很广泛,但通常用于以下目的:
  • JKS - 保护您的 Web 服务器。
  • JCEKS - 存储您的加密 key (对称),也可用于保护 Web 服务器。
  • PKCS12 - 为双向 SSL 设置 Web 服务器时,它要求客户端对服务器进行身份验证。在这些情况下,客户端将生成一个 key 对,并从中生成一个 CSR (PKCS10) 并由证书颁发机构 (CA) 对其进行签名。然后为客户端提供一个证书链,客户端将其与 PKCS12 KeyStore 中的 PrivateKey 相关联。然后可以使用它来建立 SSL 连接。
  • 关于ssl - keystore 的目的是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43786242/

    10-13 04:19