使用来自该网站的说明但稍微改变一下,我使用 -newca 创建了一个 CA,复制cacert.pem
到我的电脑上,并在 IE 中将其导入为受信任的发行者。然后我执行了 -newreq 和 -sign(注意:我执行了/full/path/CA.sh -cmd
而不是sh CA.sh -cmd
),并将证书和密钥移至 apache。
我使用 IE 和 .NET 代码访问了该网站,它看起来是可信的,非常好(除非我在前面写上 www.,这是预料之中的)。但每次我重新启动 Apache 时,我都需要输入该网站的密码。
我怎样才能做到不需要输入密码?
答案1
您想从密钥文件中删除密码。运行以下命令:
openssl rsa -in key.pem -out newkey.pem
请注意,这意味着任何具有服务器物理访问权限的人都可以复制(从而滥用)密钥。
答案2
过去,我曾因为删除自己的密钥文件里的密码而感到内疚,因为这是最简单的解决方案,但从安全角度来看,这不是最好的主意。另一种方法是将密码提供给 Apache。您可以使用SSLPassPhraseDialog
选项httpd.conf
(或它包含的另一个文件)。
如果您的服务器上只有一个 SSL 站点,则最简单的形式是:
# either of these will work
SSLPassPhraseDialog |/path/to/passphrase-script
SSLPassPhraseDialog exec:/path/to/passphrase-script
然后,您将创建一个非常简单的脚本,/path/to/passphrase-script
其中包含以下内容:
#!/bin/sh
echo "put the passphrase here"
启动时,Apache 将获取此脚本的输出并将其用作 SSL 密钥的密码。如果您有多个 SSL 站点,SSLPassPhraseDialog
有其他使用方法,因此您可以为所有键使用一个脚本,也可以为每个键使用单独的脚本,或者按照您想要的方式执行。
答案3
要从 PEM 文件中删除密码,您可以执行以下操作。请注意,当私钥和公共证书位于同一文件中时,这两个命令都是必需的:
# you'll be prompted for your passphrase one last time
openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >> newcert.pem
这将创建一个名为“newcert.pem”的文件,这是一个没有密码的 PEM 文件。正如其他答案中所述,在执行此操作之前,您应该从安全角度考虑这是否是一个好主意。
被阻碍从这里