使用 PEM 格式的密钥创建 CSR

Creating a CSR with a PEM formatted Key

我 运行 遇到了一个我似乎无法解释的 CSR 生成问题,想知道是否有人可以帮助我执行命令,或者告诉我我正在生成什么。

我想我正在生成 PEM 格式的 CRT 证书,但我的密钥似乎不是 PEM 格式!?

这是我所做的,也是我得到的。 我创建了一个 CSR:

openssl req -nodes -new -newkey rsa:2048 -sha256 -out test.csr

这会生成 2 个文件: privkey.pemtest.csr

现在当我尝试更新一些服务器时,他们抱怨我的私钥不是 PEM 格式。 nginx 和 apache 似乎对我的密钥很满意。

当我将密钥转换为:

openssl rsa -in privkey.pem -out privkey.rsa.pem

有效!?!

vimdiff 直观地显示了文件的差异,可以看到不仅标题不同,而且内容也发生了变化(前 4 个字符之后)

因此我的问题

密钥是以 DER - PEM 格式创建的,即使我指定不在创建行中使用 DER?

我发现以 RSA 格式生成密钥的唯一方法是首先使用

创建密钥文件
openssl genrsa -out ./yourkeyfile.key 2048

然后使用该文件通过

创建 CSR
openssl req -new -sha256 -key yourkeyfile.key -out yourcsrfile.csr

如果您使用单行命令,密钥文件将以 DER 格式创建。

openssl req -new -sha256 -newkey rsa:2048 -nodes -keyout yourkeyfile.key -out yourcsrfile.csr