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

26

来自 OpenSSL 1.0 更改日志:

将 PKCS#8 设置为默认的私钥写入格式, 取代传统格式。 这种形式是标准化的,更加安全,并且不包括隐含的 MD5 依赖项。 [Steve Henson]

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

非常感谢!

3个回答

30

我成功地用这种方式解决了这个请求:

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

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

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

希望这能帮助到某些人。


4
如果有人想要将密钥文件从传统格式转换成pkcs8格式:openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem - subtleseeker

14
使用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-----

请参考https://dev59.com/tGIj5IYBdhLWcg3wnmXA#20065522了解PKCS#1和PKCS#8的区别。

-traditional 对于 PKCS8->RSA 很有帮助。谢谢! - undefined

7

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 rsa -in private_pkcs8.pem -out private_pkcs1.pem

RSA公钥

从PKCS#8转换为PKCS#1:

openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out -out public_pkcs1.pem

将 PKCS#1 转换为 PKCS#8:

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

使用openssl v3.0+进行转换为PKCS#1时,需要添加-traditional参数。 - Robin A. Meade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接