openssl总是加密私钥吗?

Modified on: Sat, 17 Aug 2019 18:00:03 +0800

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

但是使用新的openssl v1.0.1,似乎忽略了-nodes参数。据我所知,私钥始终是加密的。我使用openssl错了吗?我应该使用不同的参数吗?

-nodes参数记录为:

if this option is specified then if a private
key is created it will not be encrypted

来源:http://www.openssl.org/docs/apps/ req.html#item__nodes


更多细节问题:

使用openssl 0.9.8,密钥+证书可以直接导入我们所需的其他第三方设备,这些设备需要未加密的密钥和证书。这没有任何问题。

但是当使用openssl 1.0.1时,这些第三方设备会抱怨密钥无效。确切的错误消息是:

ERROR: Private key for 'My Cert' does not appear to be a valid
RSA private key in PEM format.

这是一个封闭的源系统,它不提供其他详细信息。我今天通过玩它发现的是,如果我通过这个命令运行v1.0.1私钥:

openssl rsa -in mykey.pem -out decryptedkey.pem

...那时此第三方系统导入证书和解密密钥没有问题。当我在v1.0.1密钥上运行此命令时:

 openssl rsa -text -in mykey.pem

...私钥的文本与v1.0.1 mykey.pem文件中的内容不同。这就是我认为密钥以某种方式加密的原因。

作者:,Stéphane

最佳答案

在以后的版本中,默认格式似乎已更改。早期版本似乎产生PKCS#1 RSAPrivateKey格式,如

所示

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

和更高版本生成PKCS#8 PrivateKeyInfo格式,如

所示

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

当您openssl rsa -in mykey.pem -out decryptedkey.pem时,您将#8转换为#1

作者:Iain

相关问答

添加新评论