pem、crt、密钥文件的区别

Difference between pem, crt, key files

我无法理解 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 简介 - 密钥分为两半,public 密钥和私钥。 public 密钥可以 public 广泛分发,您可以使用它来验证但不能复制使用私钥生成的信息。私钥一定要保密。

.key文件一般是私钥,服务器端用它来加密打包数据,供客户端验证。

.pem文件一般是public密钥,客户端用来验证和解密服务器发送的数据。

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

.cert.crt 文件是证书签名请求,受信任的第三方使用它来验证密钥对的所有权,而无需直接访问私钥(这允许最终用户,他们不直接了解您的网站,相信证书有效)。在自签名方案中,您将使用证书签名请求和您自己的私钥来验证您的私钥(因此是自签名的)。根据您的具体应用,这可能不需要。 (Web 服务器或 RPC 服务器需要,但其他的不多)。

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

你列出的命令对我来说很好,除了询问不同文件的用途外,我没有其他问题。如果您需要更多信息,请丰富您的问题。

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

.csr 证书请求。 这是对证书颁发机构签署密钥的请求。 (不包括密钥本身。)

.crt 是证书颁发机构制作的证书,用于验证密钥的真实性。 (密钥本身不包括在内。)这是给其他方的,例如HTTPS 客户端。

.pem 是一个使用 base-64 编码的 text-based 容器。它可以是上述任何文件。

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

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


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