我在我的电脑上运行这个命令(Openssl 版本:1.0.1):
openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem
Run Code Online (Sandbox Code Playgroud)
我得到了这个 key.pem:
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
但是当我从我的服务器(Openssl 版本:0.9.8e-fips-rhel5)运行相同的命令时,我得到了这个输出:
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
里面的 Base64 是不同的,也是标头:
-----BEGIN PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
第一个对我有用,我怎么能在 0.9.8 版本上获得 -----BEGIN PRIVATE KEY----- 输出?
我在 OpenSsl 补丁说明上找到了这个:
将默认私钥格式更改为 PKCS#8。
所以,这可能是主要问题,我希望有人能帮我解决这个问题,我找不到获取私钥的方法,但找不到 BEGIN RSA PRIVATE KEY 的方法。
谢谢
小智 29
做openssl pkcs8 -topk8一个私钥从传统的格式转换为PKCS#8格式。
这种格式
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
私钥被称为“SSLeay 格式”或“传统格式”。
我不确定您的密钥是哪种格式,因此我将使用由genrsa. 当你genrsa在的OpenSSL 0.9.8x,生成的关键是在传统的格式。也就是说,经过
openssl genrsa -out file.key 1024
Run Code Online (Sandbox Code Playgroud)
你会得到一个传统格式的 rsa 密钥
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
然后做pkcs8与-topk8此键从传统的格式转换为PKCS#8格式。
openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem
Run Code Online (Sandbox Code Playgroud)
这是你会得到的:
-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
以上所有内容都是使用 OpenSSL 0.9.8x 完成的。它告诉您如何从传统格式密钥生成 PKCS#8 格式密钥。另一方面,您始终可以在 OpenSSL 1.0.1 上运行它以使密钥与旧版本兼容:
openssl rsa -in file.pem -text > key.pem
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51551 次 |
| 最近记录: |