如何将PKCS#8格式的PEM私钥转换为传统格式?

问题描述 投票:0回答:3

来自 OpenSSL 1.0 变更日志:

将 PKCS#8 设置为默认写入格式 对于私钥,替换 传统格式。这种形式是标准化的,更安全,并且不 包括隐式 MD5 依赖性。 [史蒂夫·汉森]

但是,我需要以前的传统格式的私钥文件。 是否可以将 pem 文件从 PKCS#8 转换为传统格式(使用 OpenSSL.exe 应用程序)?

非常感谢!

openssl private-key pem pkcs#8
3个回答
31
投票

以这种方式成功解决了这个问题 - 要求:

openssl req -configconfigfile.cfg -newkey rsa:2048 -keyout newkey.pem -out newreq.pem 365

然后,我将其转换为RSA格式:

openssl rsa -in newkey.pem -out newkey.pem

希望它能帮助别人。


19
投票

使用 Openssl 3.0 :https://www.openssl.org/docs/man3.0/man1/openssl-pkey.html

从 PKCS#1 转换为 PKCS#8:

$ cat pkcs1.pem
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
$ openssl pkey -in pkcs1.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

从 PKCS#8 转换为 PKCS#1:

$ cat pkcs8.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
$ openssl pkey -in pkcs8.pem -traditional
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

有关 PKCS#1 与 PKCS#8 的说明,请参阅 https://stackoverflow.com/a/20065522/2162144


8
投票

RSA私钥

从 PKCS#1 转换为 PKCS#8:

openssl pkcs8 -topk8 -inform pem -in private_pkcs1.pem -outform pem -nocrypt \
 -out private_pkcs8.pem

从 PKCS#8 转换为 PKCS#1(对于 OpenSSL <= 1.1 remove the

-traditional
开关):

openssl rsa -in private_pkcs8.pem -out private_pkcs1.pem -traditional

RSA 公钥

从 PKCS#1 转换为 PKCS#8:

openssl rsa -RSAPublicKey_in -in public_pkcs1.pem -pubout -out public_pkcs8.pem

从 PKCS#8 转换为 PKCS#1(对于 OpenSSL <= 1.1 remove the

-traditional
开关):

openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out -out public_pkcs1.pem -traditional
© www.soinside.com 2019 - 2024. All rights reserved.