没有密码短语可以生成RSA密钥吗?

我正在使用Apache2和Passenger进行Rails项目。 我想为testing目的创build一个自签名的SSL证书 。

sudo openssl rsa -des3 -in server.key -out server.key.new 

当我input上面的命令,它说

 writing RSA key Enter PEM pass phrase: 

如果我没有inputpass phrse,我会得到下面的错误

 unable to write key 3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo u must type in 4 to 1024 characters 3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor d:pem_lib.c:111: 3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382 

是否有可能生成一个RSA密钥没有给pass phrase ,因为我不知道如何/etc/init.d/httpd脚本将启动HTTP服务器没有人为干预(即如果我给一个4字符的密码短语,它期望我在启动Apache HTTP服务器时提供这个)。

如果您正在生成一个自签名证书,您可以在一个命令中同时执行密钥和证书,如下所示:

 openssl req -nodes -new -x509 -keyout server.key -out server.cert 

噢,马哈特在回答关于忽略-des3标志时说了些什么。

-des3标志,这是一个指示opensslencryptionserver.key.new(顺便说一句,这根本不是一个新的密钥 – 它是完全一样的server.key,只有在密码更改/删除closures)。

来自@Tom H的答案的openssl req命令是正确的,可以在server.cert创build一个自签名证书。 server.key的无密码RSA私钥:

 openssl req -nodes -new -x509 -keyout server.key -out server.cert 

下面是它的工作原理。 在@MadHatter的回答中忽略-des3在这种情况下不足以创build没有密码的私钥。 在@MadHatter引用的openssl rsa (“convert a private key”)命令和openssl genrsa (“create a private key”)命令中,这就足够了。 只是不为这里的openssl req命令。 我们另外需要-nodes (“请不要encryptionserver.key !”)。

只需通过openssl再次运行它

首先用密码生成密钥

然后openssl rsa -in server.key -out server.key

使用-nodes参数,如果指定了这个选项,私钥将不会被encryption,例如:

 openssl \ req \ -nodes \ -newkey rsa:2048 \ -keyout www.example.com.key \ -out www.example.com.csr \ -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"