密钥库

时间:2017-05-04 14:51:13

标签: ssl keystore

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

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

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

所以,我开始想知道我是否误解了密钥库及其角色的目的。如果我错了,谁能告诉我?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  • JKS(Java密钥库) - >当您只有证书时,它是一个TrustStore。当您还拥有与证书链相关联的私钥时,它是一个KeyStore。
  • JCEKS(Java增强密钥库) - >这些可以存储JKS可以存储的内容以及Secret Key(Symmetric Key)。您无法在JKS类型的KeyStore中存储密钥。
  • PKCS12 - >这就像一个KeyStore,但是一个名为PKCS12的不同类型。这些可以存储私钥及其证书链。但标准是只有1个Entry,即1个私钥及其相关的证书链。

他们的目的很广泛,但通常用于这些目的:

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