是否可以生成没有密码短语的RSA密钥?


83

我正在与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服务器时提供此密码) )。


6
您的命令行告诉openssl您加密现有密钥。听起来好像不是您想要的东西。
David Schwartz'3

可以将Apache httpd 配置为以非交互方式获取私钥密码。请参阅mod_ssl的文档,或者在许多情况下在提供的/打包的配置文件中提供注释。但是,这通常比仅保留私钥不加密更为安全。
dave_thompson_085 '18

Answers:


88

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

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

哦,@ MadHatter在回答中关于省略该-des3标志的内容。


14
这个nodes指令就是为什么我在这里。(不对私钥进行DES加密)
jorfus

38

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


21

@Tom H回答openssl req命令正确无误,可以创建包含incl 的自签名证书。的无密码RSA私钥:server.certserver.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!”)。


17

使用-nodes参数,如果指定了此选项,那么私钥将不会被加密,例如:

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"

7

只需通过openssl再次运行它

首先用密码生成密钥

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


这在ubuntu 16.04上
不起作用

3
我之所以投票,是因为这个答案不是所要的,而且该命令需要输入并且不会生成密钥。

用户已经演示了他们知道如何生成密钥。这个答案建立在这种知识的基础上,我建议采用新生成的密钥,然后再次将其传递通过,openssl 从而实现所要求的目标:生成没有密码短语的密钥。
darethas

适用于我,openssl在GitBash的Windows 10上。感谢您提供信息。
格林

0

使用下一条命令生成没有加密的无密码私钥文件。最后一个参数是私钥的大小。

openssl genrsa -out my-passless-private.key 4096

1
这不是没有密码的。它完全是带有密码的。
dave_thompson_085 '18

我正在试验参数的位置。现在可以了。我更改了最后两个参数的位置并测试了命令。
nix

现在,它会生成一个未加密的文件。(仅)位置参数后面的选项将被忽略。查看文件;它没有加密。替换4096 -des34096 -sillywombat,它仍然可以正常工作并产生相同的格式,但仍未加密(但是当然会有不同的密钥值)。无法拥有无密码的加密私钥文件,并且六年前就给出了无密码的未加密文件的正确解决方案。
dave_thompson_085 '18

你是对的。@ dave_thompson_085。最后一个参数对命令没有任何影响。我更新了答案。它不生成任何加密的base64编码,也不生成受密码保护的私钥文件。
nix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.