2017-05-04 42 views
0

通常情况下,cacert被用作信任仓库,这意味着我们放置其他服务器的证书,以便我们对其进行身份验证(我们信任来自这些服务器的连接,仅当它们使用与信任)。密钥仓库的用途

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

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

因此,我开始想知道我是否误解了密钥库的目的和它的作用。任何人都可以告诉我,如果我错了?

回答

1

技术上KeyStore和TrustStore属于同一类型。他们只是基于他们所包含的内容而提供不同的目的

A KeyStore只是一个数据库或存储库或一组证书或密钥或密钥对。当KeyStore只包含证书时,您将其称为TrustStore。

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

有不同类型的密钥库JCE提供支持:

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

它们的目的可以是广泛的,但一般用于这些目的:

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

您不会向客户端发出PKCS12。客户会建立他自己的。不要将代码格式设置为不是代码的文本。 – EJP

+0

@EJP你说得对。更正它。 –