当谈到ssl证书时,我是一个非常棒的人,这让我在过去的几天里发疯了。
我可以看到有很多文件格式,例如.cer,.crt,.pem,.keystore.jks等
有人可以让我知道他们何时以及在何种背景下使用?
什么是java密钥库,什么是密钥库?
不要说jks用于java的上下文中。我也看到过.keystore文件也被使用了。 :)
我知道有些专家会发现这个问题毫无根据且不合逻辑,但相信我对新手理解所有这些事情真的很难。
答案 0 :(得分:2)
为了更好地了解密钥库及其不同类型,您需要了解一些非对称密钥对,对称密钥和证书。
非对称密钥对
非对称密钥对是可以公开共享的公钥和私钥的组合,私钥只能由密钥对的所有者知道。这是Public-key cryptography的基本构建块。简单来说,如果使用公钥或私钥加密数据,则可以使用其他密钥解密数据。
对称密钥(密钥)
它不是一对钥匙,它只是一把钥匙。如果使用此密钥加密数据,则需要使用相同的密钥进行解密。
<强>证书强>
证书由证书颁发机构(CA)颁发给用户。用户可以是个人,服务器,设备和其他几种类型。基本上,为了从CA请求证书,用户首先创建密钥对。然后使用密钥对生成PKCS10(aka。Certificate Signing Request),并将此CSR发送给CA.然后,CA验证用户的身份,并颁发证书。证书基本上是 - 用户详细信息+公钥+密钥对详细信息。因此,证书基本上是用户的数字身份。
<强>密钥库强>
现在,您可能在想,我在哪里存储所有这些?这就是密钥库的用武之地。密钥库基本上是一个受密码保护的文件,它存储所有这些不同类型的密钥和证书。存储在密钥库中的密钥或证书称为条目。并且密钥对或密钥等条目也可以通过密码保护。而且还有几种类型的密钥库。
<强> JKS 强>
Java(&lt; 9)中的默认密钥库类型称为Java密钥库(JKS)。它可以存储密钥对和证书,但不能存储对称密钥。
JCEKS(Java增强密钥库)
这是可以存储密钥对,证书和对称密钥的密钥库类型。
<强> PKCS#12 强>
这是一种不同类型的密钥库。在互联网标准方面,它应该只包含1个密钥对条目(虽然它可以容纳更多),并且该密钥对的密码应该与密钥库的密码相同。
<强>信任库强>
是JKS。但是当在特定上下文中使用时,它被称为信任库,在其他情况下,它被称为密钥库。您知道密钥库可以包含密钥对和证书,但是当密钥库仅包含证书时,它称为信任库。如果您有信任库,最好不要向其添加任何密钥对条目。信任库的目的是维护可信CA的所有证书(例如,java中的cacerts)。
现在,您的问题的答案:
PS:这些不是技术定义,只是易于理解的陈述。
答案 1 :(得分:0)
cer,.crt,.pem,.keystore.jks是不同类型的编码。例如“PEM扩展用于不同类型的X.509v3文件,其中包含前缀为”-BEGIN ...“行的ASCII(Base64)装甲数据。” 您可以在此处查看更多内容https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how-to-convert-them
我不明白第二个问题。抱歉。我看到了真实商店和真实商店之间的许多比较。密钥库。希望这会有所帮助。