阻止 apache 每次重启时询问 SSL 密码

阻止 apache 每次重启时询问 SSL 密码

使用来自该网站的说明但稍微改变一下,我使用 -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 文件。正如其他答案中所述,在执行此操作之前,您应该从安全角度考虑这是否是一个好主意。

被阻碍从这里

相关内容