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

rke*_*erm 12 openssl pem pkcs#8 private-key

从OpenSSL 1.0更改日志:

使PKCS#8成为私钥的默认写入格式,取代传统格式.此表单是标准化的,更安全,并且不包含隐式MD5依赖项.[史蒂夫汉森]

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

非常感谢你!

rke*_*erm 23

成功解决这个问题 - 请求:

openssl req -configconfigfile.cfg -newkey rsa:2048 -keyout newkey.pem -out newreq.pem 365
Run Code Online (Sandbox Code Playgroud)

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

openssl rsa -in newkey.pem -out newkey.pem
Run Code Online (Sandbox Code Playgroud)

希望它会帮助某人.

  • 如果有人希望将其从传统格式反向转换为 pkcs8 格式: `openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem` (2认同)

tyt*_*ytk 18

使用 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-----
Run Code Online (Sandbox Code Playgroud)
$ openssl pkey -in pkcs1.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

从 PKCS#8 转换为 PKCS#1:

$ cat pkcs8.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
$ openssl pkey -in pkcs8.pem -traditional
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

有关 PKCS#1 与 PKCS#8 的说明,请参阅/sf/answers/1404586571/ 。

  • `-traditional` 对 PKCS8->RSA 有帮助。谢谢! (2认同)

Don*_*Liu 7

RSA 私钥

要从 PKCS#1 转换为 PKCS#8:

openssl pkcs8 -topk8 -inform pem -in private_pkcs1.pem -outform pem -nocrypt \
 -out private_pkcs8.pem
Run Code Online (Sandbox Code Playgroud)

要从 PKCS#8 转换为 PKCS#1:

openssl rsa -in private_pkcs8.pem -out private_pkcs1.pem
Run Code Online (Sandbox Code Playgroud)

RSA 公钥

要从 PKCS#8 转换为 PKCS#1:

openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out -out public_pkcs1.pem
Run Code Online (Sandbox Code Playgroud)

要从 PKCS#1 转换为 PKCS#8:

openssl rsa -RSAPublicKey_in -in public_pkcs1.pem -pubout -out public_pkcs8.pem
Run Code Online (Sandbox Code Playgroud)