我想创建一个用于测试目的的自签名SSL证书。
sudo openssl rsa -des3 -in server.key -out server.key.new
当我输入上述命令时,它说
writing RSA key
Enter PEM pass phrase:
如果我不输入通行证phrse,我收到以下错误消息
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 楼
如果生成的是自签名证书,则可以在一个命令中同时执行密钥和证书,如下所示:关于省略
-des3
标志。评论
这个nodes指令就是为什么我在这里。 (不对私钥进行DES加密)
–jorfus
17年1月24日在23:15
#2 楼
取消-des3
标志,这是openssl加密server.key.new的指令(顺便说一句,它根本不是新密钥-它与server.key完全相同,仅更改/删除了密码短语) )。#3 楼
@Tom H的答案中的openssl req
命令正确,可以在server.cert
incl中创建自签名证书。 server.key
中的无密码RSA私钥:openssl req -nodes -new -x509 -keyout server.key -out server.cert
这是它的工作原理。在这种情况下,@ MadHatter的答案中忽略
-des3
不足以创建没有密码短语的私钥。为此,在@MadHatter引用的openssl rsa
(“转换私钥”)命令和openssl genrsa
(“创建私钥”)命令中就足够了。只是不适合这里的openssl req
命令。我们还需要-nodes
(“请不要对server.key
进行DES加密!”)。#4 楼
使用-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"
#5 楼
只需再次通过openssl运行它,首先使用密码生成密钥
,然后
openssl rsa -in server.key -out server.key
评论
这不适用于ubuntu 16.04
–sweetfa
16年5月9日在20:19
我之所以投票,是因为这个答案不是所要的,而且该命令需要输入并且不会生成密钥。
–唐
16-10-11在13:37
用户已经演示了他们知道如何生成密钥。这个答案建立在这种知识的基础上,我建议采用新生成的密钥,并将其再次通过openssl进行传递,从而实现所要求的目标:生成没有密码短语的密钥。
– darethas
16-10-11在14:19
适用于我,来自GitBash的Windows 10上的openssl。感谢您提供信息。
–绿色
17年5月14日在21:11
很酷,它适用于我的自签名证书
–好运
20年8月13日在12:31
#6 楼
使用下一条命令生成没有加密的无密码私钥文件。最后一个参数是私钥的大小。openssl genrsa -out my-passless-private.key 4096
评论
这不是没有密码的。它完全是带有密码的。
–dave_thompson_085
18年4月25日在12:48
我正在试验参数的位置。现在可以了。我更改了最后两个参数的位置并测试了命令。
– nix
18-4-25在13:47
现在,它会生成一个未加密的文件。 (仅)位置参数后面的选项将被忽略。查看文件;它没有加密。将4096 -des3替换为4096 -sillywombat,它仍然可以正常工作并产生相同的格式,但仍未加密(当然,密钥值也不同)。无法拥有无密码的加密私钥文件,并且六年前就给出了无密码的未加密文件的正确解决方案。
–dave_thompson_085
18-4-26在12:58
你是对的。 @ dave_thompson_085。最后一个参数对命令没有任何影响。我更新了答案。它不生成任何加密的base64编码,也不生成受密码保护的私钥文件。
– nix
18年4月26日在14:16
#7 楼
将'-nodes'添加到'openssl req',可以从'openssl req'命令生成未加密(无密码)私钥。评论
这是正确的答案。 -nodes标志的意思是“ No DES”:即,不加密私钥。
–Jabberwock
20年7月25日在18:19
评论
您的命令行告诉openssl加密现有密钥。听起来好像不是您想要的。可以将Apache httpd配置为以非交互方式获取私钥密码。请参阅mod_ssl的文档,或者在许多情况下在提供的/打包的配置文件中提供注释。但是,这通常比仅保留私钥不加密更为安全。这更简单。