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

diy*_*iya 137 https openssl passphrase apache-2.2

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

sudo openssl rsa -des3 -in server.key -out server.key.new
Run Code Online (Sandbox Code Playgroud)

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

writing RSA key
Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

是否可以在不提供 RSA 密钥的情况下生成 RSA 密钥pass phrase,因为我不确定/etc/init.d/httpd脚本将如何在没有人工干预的情况下启动 HTTP 服务器(即,如果我提供 4 个字符的密码短语,它希望我在启动 Apache HTTP 服务器时提供它)。

Tom*_*Tom 135

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

openssl req  -nodes -new -x509  -keyout server.key -out server.cert
Run Code Online (Sandbox Code Playgroud)

哦,还有@MadHatter 在关于省略-des3标志的回答中所说的话。

  • 节点指令是我在这里的原因。(私钥没有DES加密) (26认同)

Mad*_*ter 49

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


tan*_*ius 34

@Tom Hopenssl req答案中的命令对于在server.certincl 中创建自签名证书是正确的。中的无密码 RSA 私钥server.key

openssl req -nodes -new -x509 -keyout server.key -out server.cert
Run Code Online (Sandbox Code Playgroud)

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


小智 27

使用-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"
Run Code Online (Sandbox Code Playgroud)


小智 9

只需通过 openssl 再次运行它

首先用密码生成密钥

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

  • 我投了反对票,因为这个答案不是被问到的,而且该命令需要输入并且不生成密钥。 (3认同)

小智 7

将“-nodes”添加到“openssl req”允许从“openssl req”命令生成未加密(无密码短语)私钥

  • 这正是正确的答案。-nodes 标志表示“无 DES”:即不加密私钥。 (2认同)

nix*_*nix 5

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

openssl genrsa -out my-passless-private.key 4096
Run Code Online (Sandbox Code Playgroud)