小能豆

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

bash

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


阅读 264

收藏
2024-02-15

共1个答案

小能豆

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

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

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

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

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

.cert.crt文件是签名证书——基本上是允许第三方将某些站点标记为可信的“魔法”。

.csr是一个证书签名请求,是受信任的第三方用来验证密钥对所有权的质询,而无需直接访问私钥(这使得不直接了解您网站的最终用户可以确信该证书已验证)。在自签名场景中,您将使用带有您自己的私钥的证书签名请求来验证您的私钥(从而自签名)。根据您的具体应用程序,这可能不需要。(Web 服务器或 RPC 服务器需要,但其他不多)。

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

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

2024-02-15