如何让 Apache 2 停止要求 SSL 证书的密码?

Joh*_*ott 5 ssl apache2

我刚刚向 Apache 添加了 SSL 证书。问题是 Apache 在系统启动时运行,在我的服务器打开后,Apache 运行但不运行。我输入了我电脑的 IP 地址,我的浏览器一直在尝试连接。我看到一个旋转的圆圈。

然后我进入我的服务器,杀死所有与 Apache 相关的进程,然后运行sudo service apache2 restart. 由于sudo提示我输入我的超级用户密码,但在我输入后,Apache 要求输入 .key 文件的密码。我把它放进去,然后 Apache 工作正常。SSL 甚至可以工作。

那么为什么 Apache 直到我重新启动它才能工作?是因为它要我每次启动时都输入密码吗?如果是这样,我如何在我的 Xubuntu 服务器上做到这一点?我可以做到这样我就不必每次都把它放进去吗?

Lek*_*eyn 7

您的 SSL 证书的私钥似乎受密码保护。要测试是否真的如此,请使用命令检查密钥文件的开头head -3 your.key。此私钥已加密:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,C251E8A1254B933D763703EE1C364AB7
Run Code Online (Sandbox Code Playgroud)

此文件未加密:

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvbeWtO9nQP4cFFuhGrOM/WQ73oTQHU7mzZB9CaA3R2iwjDNz
wwlDtT9tfo0tCC2ib9STfeM6AYrdI3wauzCu7AV4CFGSMP3HLX8DJuk8zzbdQHHv
Run Code Online (Sandbox Code Playgroud)

要从 RSA 私钥中删除密码,请使用以下命令:

umask 077
mv your.key old-with-pass.key
openssl rsa -in old-with-pass.key -out your.key
Run Code Online (Sandbox Code Playgroud)

umask 077命令对于确保不会使用过度宽松的权限创建新密钥是必要的。或者,您可以手动更改文件的模式chmod 400 new.key。根据密钥的位置,您可能必须在openssl,mvchmod命令前加上sudo


小智 6

@JamesSneeringer在http://serverfault.com 上回答。

过去我一直对从我自己的密钥文件中删除密码感到内疚,因为这是最简单的解决方案,但在安全方面,这不是最好的主意。另一种方法是将密码提供给 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则可以通过其他方式使用它,因此您可以为所有密钥使用一个脚本,或者为每个密钥使用一个单独的脚本,或者您想怎么做。

  • 将密码以纯文本形式存储在脚本中是个好主意吗? (6认同)