我刚刚为 Apache 添加了 SSL 证书。问题是 Apache 在系统启动时运行,而我的服务器启动后,Apache 运行但不运行。我输入了我电脑的 IP 地址,我的浏览器只是不断尝试连接。我看到一个旋转的圆圈。
然后我进入我的服务器,终止所有与 Apache 相关的进程,然后运行sudo service apache2 restart
。由于sudo
提示我输入超级用户密码,但在我输入密码后,Apache 要求输入 .key 文件的密码。我输入了密码,然后 Apache 就可以正常工作了。SSL 甚至可以正常工作。
那么为什么 Apache 在我重新启动之前无法工作?是因为它要求我每次启动时都输入密码吗?如果是这样,我该如何在 Xubuntu 服务器上执行此操作?我可以这样做,这样就不必每次都输入密码了吗?
答案1
您的 SSL 证书的私钥似乎受密码保护。要测试是否确实如此,请使用以下命令检查密钥文件的开头head -3 your.key
。此私钥已加密:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,C251E8A1254B933D763703EE1C364AB7
该文件未加密:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvbeWtO9nQP4cFFuhGrOM/WQ73oTQHU7mzZB9CaA3R2iwjDNz
wwlDtT9tfo0tCC2ib9STfeM6AYrdI3wauzCu7AV4CFGSMP3HLX8DJuk8zzbdQHHv
要从 RSA 私钥中删除密码,请使用以下命令:
umask 077
mv your.key old-with-pass.key
openssl rsa -in old-with-pass.key -out your.key
该umask 077
命令是必需的,以确保不会以过于宽松的权限创建新密钥。或者,您可以使用 手动更改文件的模式chmod 400 new.key
。根据密钥的位置,您可能必须在openssl
、mv
和chmod
命令前加上sudo
。
答案2
回答http://serverfault.com作者:@JamesSneeringer。
过去,我曾因为删除自己的密钥文件里的密码而感到内疚,因为这是最简单的解决方案,但从安全角度来看,这不是最好的主意。另一种方法是将密码提供给 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
有其他使用方法,因此您可以为所有键使用一个脚本,也可以为每个键使用单独的脚本,或者按照您想要的方式执行。