题 是否可以生成没有密码短语的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服务器时提供此功能)。


68
2018-03-05 06:28




你的命令行告诉你 openssl 加密现有密钥。这听起来像你想要的东西。 - David Schwartz
Apache httpd 能够 配置为非交互式获取私钥密码;请参阅mod_ssl的文档,或者在提供/打包的配置文件中查看注释。但是,这通常不比仅保留未加密的私钥更安全,这更简单。 - dave_thompson_085


答案:


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

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

哦,以及@MadHatter所说的话 他的回答 关于省略 -des3 旗。


76
2018-03-05 06:55



节点指令就是我在这里的原因。 (没有私钥的DES加密) - jorfus


离开了 -des3 flag,这是openssl加密server.key.new的指令(顺便说一下,它根本不是一个新密钥 - 它与server.key完全相同,只是密码被更改/剥离)。


34
2018-03-05 06:49





openssl req 来自的命令 回答@Tom H. 在中创建自签名证书是正确的 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 请!”)。


19
2018-02-09 00:25





使用 -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
2018-05-12 14:42





只需通过openssl再次运行它

首先使用密码短语生成密钥

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


6
2018-01-26 15:37



这不适用于ubuntu 16.04 - sweetfa
我downvoted,因为这个答案不是被问到的,命令也需要输入而不生成密钥。 - Don
用户已经证明他们知道如何生成密钥。这个答案建立在这些知识的基础上,我建议采用新生成的密钥并再次通过它 openssl   因此实现了所要求的目标:生成没有密码短语的密钥。 - darethas
对我有用, openssl 在Windows 10上从GitBash。谢谢你的信息。 - Green


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

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

0
2018-04-25 11:17



这不是密码。它完全是完全密码的。 - dave_thompson_085
我正在试验参数的位置。现在好了。我更改了最后两个参数的位置并测试了命令。 - nix
现在它产生了一个 加密 文件。 (仅)位置参数之后的选项将被忽略。看看文件;它没有加密。更换 4096 -des3 同 4096 -sillywombat 它仍然可以工作并产生相同的格式,仍然是未加密的(但当然是一个不同的键值)。无法使用无密码加密私钥文件,六年前就提供了无密码未加密文件的正确解决方案。 - dave_thompson_085
你是对的。 @ dave_thompson_085。最后一个参数对命令没有任何影响。我更新了我的答案。它生成没有加密的base64编码而不是密码保护的私钥文件。 - nix