经过更多的挖掘,我设法找到了一种方法来实现这一点。
RNDPASS=$(REDACTED) && openssl genrsa -passout pass:$RNDPASS -aes256 4096 > server.key && echo $rndpass > server.key.pass && openssl req -sha256 -passin pass:$RNDPASS -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=example.com" -new -key server.key -out server.csr
我抓住我的回答从superuser.com
这是我跑这条线的输出结果。我当然不会向任何人暗示他们实际使用此证书的csr或密码。
根@ 21944aa49917:〜#猫server.csr |要点粘贴-p https://gist.github.com/2f90234c701ec2244365根@ 21944aa49917:〜#猫 server.key |要点粘贴-p https://gist.github.com/bf508e9048e2e4a385d3 根@ 21944aa49917:〜#猫server.key.pass | gist-paste -p https://gist.github.com/2cd73181136895133621
打破这一点。
首先我们需要生成一个随机密码,为了我的安全起见,我们将在变量$ RNDPASS中存储一个随机密码。我不会公开使用什么魔法创建我的字符串,但它会输出一个32个字符的字符串。
RNDPASS = $(REDACTED)& &
然后,我们需要生成密钥给它以 “OpenSSL的genrsa” 的manpaged不佳 “-passout ARG” 部分中的密码,您可以阅读更多here.
的OpenSSL genrsa -passout传递:$ RNDPASS -aes256 4096> server.key & &
现在我们已经生成了一个密钥,并且事情没有失败让我们将输出存储在server.key.pass中。你真的可以管这在任何地方,甚至只是回到标准输出,我选择它粘成一个文件,在这个例子与...
回声$ rndpass> server.key.pass & &
最后我们需要生成csr(证书签名请求),如果你想要,你可以使用Docker和环境变量来自动生成一个ssl证书。
OpenSSL的REQ -sha256 -passin传递:$ RNDPASS -subj> “/C=US/ST=Denial/L=Springfield/O=Dis/CN=example.com” -new -key服务器。key -out server.csr
'CN = www.example.com' - 您应该使用Chrome访问您的网站。它肯定会失败。 ***请勿***将DNS名称放入CN中。它已被IETF和CA/B论坛弃用。将DNS名称放入SAN中。 – jww 2014-09-29 06:14:44
感谢这个信息我会更新我的例子。 – chamunks 2014-09-29 06:15:52
@jww你碰巧知道每个关键细节的简短版本? – chamunks 2014-09-29 13:11:14