困惑于不同的ssl证书

时间:2018-02-05 10:21:15

标签: java cryptography keystore jks

当谈到ssl证书时,我是一个非常棒的人,这让我在过去的几天里发疯了。

我可以看到有很多文件格式,例如.cer,.crt,.pem,.keystore.jks等

有人可以让我知道他们何时以及在何种背景下使用?

什么是java密钥库,什么是密钥库?

不要说jks用于java的上下文中。我也看到过.keystore文件也被使用了。 :)

我知道有些专家会发现这个问题毫无根据且不合逻辑,但相信我对新手理解所有这些事情真的很难。

2 个答案:

答案 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)。

现在,您的问题的答案:

  • 您可以使用扩展名为.jks的jks文件命名,也可以命名.keystore扩展名。最好建议维护扩展,以便了解它是什么类型的密钥库。这些扩展不是标准,而是最佳实践
    • JKS - .jks或.keystore或.truststore
    • PKCS12 - .p12或.pkcs12
    • JCEKS - .jceks
    • 证书 - .crt或.cer或.pem或.cert
  • 以特定格式存储在文件中的证书定义了它的类型。如果它存储为二进制数据,则称为DER格式。当它以Base64编码格式存储,并且具有标题(BEGIN CERTIFICATE)和页脚(END CERTIFICATE)时,它被称为PEM格式。

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

https://helpdesk.ssls.com/hc/en-us/articles/204093372-What-are-certificate-formats-and-what-is-the-difference-between-them-

我不明白第二个问题。抱歉。我看到了真实商店和真实商店之间的许多比较。密钥库。希望这会有所帮助。