openssl总是encryption私钥吗?

当使用openssl 0.9.8创build一个新的自签名证书+密钥时,有一个-nodes参数可以用来告诉openssl不encryption它创build的私钥。 例如:

 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参数。 从我可以告诉,私钥总是encryption。 我使用openssl错了吗? 有没有一个不同的参数,我应该使用呢?

-nodes参数logging为:

 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,key + cert可以直接导入到其他第三方设备,我们期望未encryption的密钥和证书。 这工作没有任何问题。

但是当使用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文件中的内容不同。 这就是为什么我认为密钥是以某种方式encryption的原因。

它看起来像更高版本中的默认格式已更改。 早期版本似乎产生PKCS#1 RSAPrivateKey格式,如表所示

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

而更高版本将生成一个PKCS#8 PrivateKeyInfo格式

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

当你打开openssl rsa -in mykey.pem -out decryptedkey.pem你从#8转换到#1