阻止 apache 每次重新启动时要求输入 SSL 密码

46 ssl openssl ssl-certificate init.d apache-2.2

使用来自该站点的说明但稍微改变它们我使用 -newca 创建了一个 CA,我复制cacert.pem到我的 comp 并在 IE 中作为受信任的发行者导入。然后我做了 -newreq 和 -sign (注意:我做/full/path/CA.sh -cmd和不做sh CA.sh -cmd)并将证书和密钥移动到 apache。

我在 IE 中访问了该站点并使用 .NET 代码,它看起来很受信任,很棒(除非我在前面写了 www. 这是预期的)。但是每次我重新启动 apache 时,我都需要输入我的网站密码?

我怎样才能做到这样我就不需要输入密码?

War*_*ner 75

您想从密钥文件中删除密码。运行这个:

openssl rsa -in key.pem -out newkey.pem
Run Code Online (Sandbox Code Playgroud)

请注意,这意味着可以物理访问服务器的任何人都可以复制(从而滥用)密钥。

  • 任何导致安全性显着降低的建议都应该带有警告/警告。简而言之,这个答案意味着任何可以物理访问机器的人都可以破坏您的证书。 (5认同)
  • 你当然有一个观点 slartibartfast,我不反对功绩。但是,我想不出有任何运行良好的 IT 部门可以将密码短语留在带有 Apache 使用的密钥对的私钥上。 (2认同)

Jam*_*ger 27

过去我一直对从我自己的密钥文件中删除密码感到内疚,因为这是最简单的解决方案,但在安全方面,这不是最好的主意。另一种方法是将密码提供给 Apache。您可以使用SSLPassPhraseDialog您的httpd.conf(或它包含的其他文件)中的选项执行此操作。

如果您的服务器上只有一个 SSL 站点,那么最简单的形式是:

# either of these will work
SSLPassPhraseDialog |/path/to/passphrase-script
SSLPassPhraseDialog exec:/path/to/passphrase-script
Run Code Online (Sandbox Code Playgroud)

然后,您将创建一个名为的非常简单的脚本/path/to/passphrase-script,其中包含如下内容:

#!/bin/sh
echo "put the passphrase here"
Run Code Online (Sandbox Code Playgroud)

启动时,Apache 将获取此脚本的输出并将其用作 SSL 密钥的密码。如果您有多个 SSL 站点,SSLPassPhraseDialog则可以通过其他方式使用它,因此您可以为所有密钥使用一个脚本,或者为每个密钥使用一个单独的脚本,或者您想怎么做。

  • 这对您的安全没有任何帮助——任何闯入的人只需要阅读 Apache 配置,然后阅读该脚本,它们就像您首先离开密码短语一样好。 (25认同)
  • 我不知道如果你无论如何都要写下密码,你为什么不删除它。我不担心任何人闯入,因为所有权限都设置正确。或者至少大部分。现在唯一可以访问我的文件的是我的主机提供商(我无法对他们做任何事情,因为他们拥有硬件并且可以以 root 用户身份闯入或访问物理驱动器)和我作为 root 用户。 (4认同)
  • 和`chmod +x /path/to/passphrase-script` (2认同)
  • 我发现这在用于配置管理的大型环境中很有用。您不希望自动启动的每台机器在启动时都要求输入密码,尤其是在“在云中”运行时。使用脚本,您可以通过不安全的渠道(Amazon S3、yum 存储库等)存储和分发加密文件.) 而密码是通过加密通道发送的,比如使用 Puppet 或 Chef 时。 (2认同)