Sté*_*ane 6 linux openssl private-key
当使用 openssl 0.9.8 创建一个新的自签名证书+密钥时,有一个-nodes参数可以用来告诉 openssl 不要加密它创建的私钥。例如:
openssl req -x509 -nodes -days 365 \
-subj '/C=US/ST=Florida/L=Jupiter/CN=test.com' \
-newkey rsa:1024 -keyout mykey.pem -out mycert.pem
Run Code Online (Sandbox Code Playgroud)
但是使用新的openssl v1.0.1,似乎-nodes忽略了该参数。据我所知,私钥始终是加密的。我使用 openssl 错了吗?我应该使用不同的参数吗?
该-nodes参数被记录为表示:
if this option is specified then if a private
key is created it will not be encrypted
Run Code Online (Sandbox Code Playgroud)
来源:http : //www.openssl.org/docs/apps/req.html#item__nodes
询问更多细节:
使用 openssl 0.9.8,可以将密钥 + 证书直接导入到我们拥有的其他需要未加密密钥和证书的第三方设备中。这没有任何问题。
但是在使用 openssl 1.0.1 时,这些 3rd 方设备会抱怨密钥无效。确切的错误消息是:
ERROR: Private key for 'My Cert' does not appear to be a valid
RSA private key in PEM format.
Run Code Online (Sandbox Code Playgroud)
这是一个闭源系统,它不提供额外的细节。我今天通过玩弄它发现的是,如果我通过以下命令运行 v1.0.1 私钥:
openssl rsa -in mykey.pem -out decryptedkey.pem
Run Code Online (Sandbox Code Playgroud)
...然后在这一点上,这个 3rd 方系统在导入证书和解密密钥时没有问题。当我在 v1.0.1 密钥上运行此命令时:
openssl rsa -text -in mykey.pem
Run Code Online (Sandbox Code Playgroud)
...私钥的文本与 v1.0.1 mykey.pem 文件中的文本不同。这就是为什么我认为密钥是以某种方式加密的。
看起来默认格式在以后的版本中发生了变化。早期版本似乎产生 PKCS#1 RSAPrivateKey 格式,如
-----BEGIN RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
和更高版本生成 PKCS#8 PrivateKeyInfo 格式,如
-----BEGIN PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
当您openssl rsa -in mykey.pem -out decryptedkey.pem从 转换#8为#1
| 归档时间: |
|
| 查看次数: |
7294 次 |
| 最近记录: |