我正在使用Apache2和Passenger进行Rails项目。 我想为testing目的创build一个自签名的SSL证书 。
sudo openssl rsa -des3 -in server.key -out server.key.new
当我input上面的命令,它说
writing RSA key Enter PEM pass phrase:
如果我没有inputpass 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服务器时提供这个)。
如果您正在生成一个自签名证书,您可以在一个命令中同时执行密钥和证书,如下所示:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
噢,马哈特在回答关于忽略-des3标志时说了些什么。
-des3
标志,这是一个指示opensslencryptionserver.key.new(顺便说一句,这根本不是一个新的密钥 – 它是完全一样的server.key,只有在密码更改/删除closures)。
来自@Tom H的答案的openssl req
命令是正确的,可以在server.cert
创build一个自签名证书。 server.key
的无密码RSA私钥:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
下面是它的工作原理。 在@MadHatter的回答中忽略-des3在这种情况下不足以创build没有密码的私钥。 在@MadHatter引用的openssl rsa
(“convert a private key”)命令和openssl genrsa
(“create a private key”)命令中,这就足够了。 只是不为这里的openssl req
命令。 我们另外需要-nodes
(“请不要encryptionserver.key
!”)。
只需通过openssl再次运行它
首先用密码生成密钥
然后openssl rsa -in server.key -out server.key
使用-nodes
参数,如果指定了这个选项,私钥将不会被encryption,例如:
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/[email protected]"