Openssl pkcs8 默认格式提供 RSA 私钥

Openssl pkcs8 默认格式提供 RSA 私钥

我在我的电脑上运行此命令(Openssl 版本:1.0.1):

openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem

我得到了这个key.pem:

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----

但是当我从我的服务器(Openssl 版本:0.9.8e-fips-rhel5)运行相同的命令时,我得到了以下输出:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----

里面的 Base64 和标题都不同:

-----BEGIN PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----

第一个对我有用,我如何在 0.9.8 版本上获取 -----BEGIN PRIVATE KEY----- 输出?

我在 OpenSsl 补丁说明中发现了这一点:

将默认私钥格式更改为 PKCS#8。

所以,这可能是主要问题,我希望有人可以帮助我解决这个问题,我找不到获取私钥的方法,但没有找到 BEGIN RSA PRIVATE KEY 的方法。

谢谢

答案1

openssl pkcs8 -topk8私钥从传统格式转换为 pkcs#8 格式。

这种格式

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

被称为私钥的“SSLeay格式”或“传统格式”。

我不确定你的密钥是哪种格式,所以我将使用 生成的私钥来演示这个想法genrsa。在 OpenSSL 0.9.8x 中执行此操作时genrsa,生成的密钥是传统格式。也就是说,在

openssl genrsa -out file.key 1024

你会得到一个传统格式的 rsa 密钥

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----

然后pkcs8将此-topk8密钥从传统格式转换为 pkcs#8 格式。

openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem

您将获得以下内容:

-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----

以上所有操作均使用 OpenSSL 0.9.8x 完成。它告诉您如何从传统格式密钥生成 PKCS#8 格式密钥。另一方面,您始终可以在 OpenSSL 1.0.1 上运行此操作以使密钥与旧版本兼容:

openssl rsa -in file.pem -text > key.pem

相关内容