pem,crt,密钥文件之间的区别

时间:2020-07-31 16:02:57

标签: ssl openssl certificate pkcs#12 jks

我在理解openssl生成的文件之间的区别以及如何检测它们方面遇到问题。

例如,我正在尝试使用私钥生成自签名证书,并从p12生成JKS文件 格式。我像疯子一样谷歌搜索,但我仍然不知道如何正确生成它以便能够使用以下命令。

openssl pkcs12 -export -in user.pem -inkey user.key -certfile user.pem -out testkeystore.p12
keytool -importkeystore -srckeystore testkeystore.p12 -srcstoretype pkcs12 -destkeystore wso2carbon.jks -deststoretype JKS

来源:https://www.ibm.com/support/pages/how-generate-jks-keystore-existing-private-key

我发现了几个不同的命令来生成自签名证书和私钥,但是我不知道如何将结果文件映射到上面的命令,更糟糕的是我不明白这些命令的作用。 我的意思是说,我看到了它们生成的文件,并了解了用来对其进行签名的证书和私钥(或者可能是:|的另一种方式),但是这些命令之间的区别是cert.pem === certificate.crt-那些文件扩展名使我发疯。

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

这是我在openssl命令中遇到类似问题的另一种情况。在这一点上,我什至已经准备好阅读一些RFC(我希望它不会出现在这里:))

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这些文件名代表密钥生成和验证过程的不同部分。请注意,名称仅是约定俗成的名称,您可以轻松地调用文件 public void detach(Object entity){ em.detach(entity); } 并且内容将相同,因此请注意如何使用文件名。

关于PKI的简要入门-密钥分为两半,即公共密钥和私有密钥。公用密钥可以公开和广泛分布,您可以使用它来验证(但不能复制)使用私钥生成的信息。私钥必须保密。

pepperoni.pizza文件通常是私钥,服务器使用它来加密和打包数据以供客户端验证。

.key文件通常是公用密钥,客户端使用它来验证和解密服务器发送的数据。

.pem文件同时嵌入了两半密钥,因此管理员可以轻松地管理两半密钥。

.p12.cert文件是证书签名请求,由受信任的第三方用于验证密钥对的所有权而无需直接访问私钥(这使得最终用户可以没有直接了解您的网站的信息,并确信该证书有效)。在自签名方案中,您将使用证书签名请求和您自己的私钥来验证您的私钥(因此是自签名)。根据您的特殊应用,可能不需要这样做。 (Web服务器或RPC服务器需要,但其他不需要)。

JKS密钥库是Java的本机文件格式,用于存储和管理上述某些或所有组件,并保留每个密钥允许或拒绝的相关功能的数据库。

您列出的命令对我来说似乎很好,除了问这些不同的文件是什么用途之外,我没有看到其他问题。如果您需要更多信息,请补充您的问题。