是否有可能在没有密码的情况下生成 RSA 密钥?

是否有可能在没有密码的情况下生成 RSA 密钥?

我正在使用 Apache2 和 Passenger 进行 Rails 项目。我想创建一个自签名SSL 证书用于测试目的。

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

当我输入上述命令时,它说

writing RSA key
Enter PEM pass phrase:

如果我不输入密码,我会收到以下错误

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 服务器时提供该密码)。

答案1

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

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

哦,@MadHatter 说的是他的回答关于省略-des3标志。

答案2

删除-des3标志,这是指示 openssl 加密 server.key.new 的指令(顺便说一句,这根本不是一个新密钥 - 它与 server.key 完全相同,只是密码被更改/删除了)。

答案3

openssl req来自的命令@Tom 的回答在中创建自签名证书server.cert(包括无密码的 RSA 私钥)是正确的server.key

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

下面是它的工作原理。省略-des3,如@MadHatter 的回答在这种情况下,创建没有密码的私钥是不够的。它openssl rsa@MadHatter 提到的(“转换私钥”)命令和openssl genrsa(“创建私钥”)命令中的内容足以实现此目的。只是openssl req这里的命令不够。我们还需要-nodes(“请勿使用 DES 加密server.key!”)。

答案4

添加-nodes“openssl req”允许从“openssl req”命令生成未加密(无密码)的私钥。

-nodes标志表示“无 DES”:即不加密私钥。

相关内容