pem、crt和密钥文件之间的差异



我在理解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(我希望它不会变成这样:(

提前感谢的帮助

这些文件名代表密钥生成和验证过程的不同部分。请注意,名称只是惯例,您可以很容易地将文件称为pepperoni.pizza,并且内容将是相同的,因此请注意如何使用文件名。

关于PKI的简单入门介绍-密钥分为两半,一个公钥和一个私钥。公钥可以公开、广泛地分发,您可以使用它来验证但不能复制使用私钥生成的信息。私钥必须保密。

.key文件通常是私钥,由服务器用于加密和打包数据以供客户端验证。

.pem文件通常是客户端用来验证和解密服务器发送的数据的公钥。PEM文件也可能是编码的私钥,所以如果您不确定,请检查内容。

.p12文件嵌入了一半密钥,因此管理员可以轻松地管理一半密钥。

CCD_ 5或CCD_;魔术;允许某些网站被第三方标记为可信任。

.csr是一种证书签名请求,由受信任的第三方在没有直接访问私钥的情况下使用它来验证密钥对的所有权(这使得对您的网站没有直接了解的最终用户能够确信证书是有效的(。在自签名场景中,您将使用带有自己私钥的证书签名请求来验证您的私钥(因此是自签名的(。根据您的具体应用程序,可能不需要这样做。(web服务器或RPC服务器需要,但其他不需要(。

JKS密钥库是Java的一种本地文件格式,用于存储和管理上面的部分或全部组件,并保留每个密钥允许或拒绝的相关功能的数据库。

你列出的命令对我来说很好,除了问不同的文件是用来做什么之外,我看不出还有什么问题。如果你需要更多信息,请丰富你的问题。

.key私钥密钥所有者可以访问,其他人无法访问。

.csr证书请求这是请求证书颁发机构对密钥进行签名。(密钥本身不包括在内。(

.crt是由验证密钥真实性的证书颁发机构生成的证书。(密钥本身不包括在内。(这是提供给其他方的,例如HTTPS客户端。

.pem是一个使用base-64编码的基于文本的容器。它可以是上面任何一个文件。

-----BEGIN EXAMPLE-----
...
-----END EXAMPLE-----

.p12是一个PKCS12文件,它是一种容器格式,通常用于组合私钥和证书。


不是只有一个扩展。例如,您可能会看到具有.crt.pem扩展名的证书。

只是添加更多信息:.der,另一种(二进制(编码(公钥或私钥,或csr(

最新更新