apache2重新启动时的SSL密码


33

我在Apache2上从Godaddy设置了通配符SSL证书。每当服务器重新启动时,它都会要求输入SSL证书私钥的密码。

消除重新启动的障碍的最佳方法是什么,因为当日志文件轮换在深夜发生时,服务器无法重新启动,并且由于共享服务器,我在早上接到一个不满意的客户电话。


5
在回答实际问题后,让我补充:日志文件轮换不需要重新启动。重新加载就可以了,不需要您出示任何凭据。
Jan Jungnickel,2009年

谢谢Jan-好点-我实际上不确定切片为什么要重新开始-似乎发生在大约1
倍的

Answers:


28

要使apache每次重新启动都收到密码,请将其添加到httpd.conf中:

SSLPassPhraseDialog exec:/path/to/passphrase-file

在您的密码文件中:

#!/bin/sh
echo "passphrase"

并使密码短语文件可执行:

chmod +x passphrase-file

1
也为我工作!:D
markcial 2010年

5
请记住在包含密码短语的脚本上设置适当的权限,否则您实际上已经删除了拥有密码短语为您提供的所有安全性。(您还应该按照Max的回答中所述,对密钥设置适当的权限)。
voretaq7 '02

6
考虑到两个文件的所有者都必须是root用户,如何存储具有600个权限的密钥(带有密码)和具有700个权限的脚本比仅存储不具有600个许可密码的密钥更安全?
zelanix

5
我同意; 这是毫无意义的安全性。一定要从密钥中删除密码短语,以便自动重启;但不要认为您可以以任何方式弥补刚刚造成的安全损失。通常这是一个很好的权衡,但这一个权衡。
MadHatter支持Monica 2015年

为了完整起见
2016年

29

您需要像这样从私钥文件中删除加密:

openssl rsa -in server.key -out server.key.new

mv server.key.new server.key

确保新密钥文件只能由root用户读取-否则,拥有此服务器的Shell访问权限的任何人都将能够获取私钥并模拟您的服务器。

要使密钥只能由根用户读取,请在交换密钥之前执行“ chmod 600 server.key.new”。


我尝试了您的想法,仍然在sudo上遇到了挑战。/apache2restart :(
ryw

4
+1,因为这不是“想法”,而是实际过程
代码头

我使用了“想法”一词,因为它对我不起作用。
ryw

2
如果您可以轻松地删除ssl证书而无需输入密码,则该密码将如何使ssl证书更安全?(或是否要求您输入密码?)
user2693017 2014年

3
@ user2693017-此处描述的openssl命令将要求输入加密私钥的密码。不知道密码,将其删除将不起作用。
Michael Paesold '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.