如何使用 RSA 密钥而不是常规密钥生成证书?

如何使用 RSA 密钥而不是常规密钥生成证书?

我正在尝试查看证书是如何生成的,我有一个名为 site.com.crt 的密钥文件,一个名为 site.com.bundle 的捆绑文件和一个名为 site.com.key 的密钥文件,我无法生成与旧证书相同类型的证书,因为开始时的密钥是 RSA 密钥。

我有:

-----开始私钥-----

旧证书具有:

-----开始 RSA 私钥-----

答案1

类型为 的 PEM 块PRIVATE KEY包含一个 PKCS8 格式的密钥(更具体地说是 PKCS8 未加密格式),可用于任何包括 RSA 在内的算法;要查看哪些,请执行

openssl pkey -in pkcs8file -noout -text

如果是 RSA,则可以转换为 PEM 类型RSA PRIVATE KEY,其中包含 OpenSSL“传统”格式,即每个算法而不是 PKCS8,更具体地说是由 PKCS1 定义的,

openssl rsa -in pkcs8file -out tradfile 
# or in 1.1.0 up 
openssl pkey -in pkcs8file -out tradfile -traditional 

在所有这些方面,你可以省略-in file-out file分别使用 stdin 或 stdout,它们可以根据您的操作系统(或对于 WSL,模拟操作系统)和 shell 的支持进行重定向或管道传输。你通过指定(对称或 PBE)密码来加密传统格式的文件,但由于您没有加密 PKCS8 格式的文件,所以我不知道您为什么要这样做。

相反,你可以使用以下方法将传统格式的密钥(如 RSA 或其他)转换为 PKCS8 格式

openssl pkey -in tradfile -out pkcs8file
# default unencrypted but you can add a cipher to encrypt
# or
openssl pkcs8 -topk8 -in tradfile -out pkcs8file 
# default encrypted but add -nocrypt for unencrypted

您可以再次使用 stdin/stdout 并重定向或管道。

但是,您声称您有一个名为 site.com.crt 的密钥文件。这不太可能。虽然文件名的扩展名(如果有!)实际上并不控制内容,但它通常被选择(如果存在)来反映内容,如果该文件不是由疯子或虐待狂命名的,则它很可能包含证书,而不是密钥。证书(此处相关的类型,主要是 X.509 或 PKIX)可用于在公钥系统中分发和管理公钥,特别是公钥基础设施或 PKI,这是我们在世界各地用于大多数事物的一种公钥系统,但证书不是密钥,密钥也不是证书,就像汽车不是方向盘,方向盘不是汽车一样。

相关内容