我正在使用 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”:即不加密私钥。