Apache - Init:无法打开服务器私钥文件

时间:2014-03-07 21:29:57

标签: apache ssl httpd.conf suexec

我在运行localhost的apache上启用了ssl。我生成了一个自签名证书并将其放在通常的位置:

[david@david web]$ ll /etc/ssl/certs/
...
-rwxrwxrwx. 1 david david    977 Mar  7 13:18 localhost.crt
-rwxrwxrwx. 1 david david    712 Mar  7 13:16 localhost.csr
-rwxrwxrwx. 1 david david    963 Mar  7 13:12 localhost.key

但是当我重启Apache时,服务器出现故障,我在错误日志中收到以下内容:

[Fri Mar 07 13:29:17 2014] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Fri Mar 07 13:29:17 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Mar 07 13:29:17 2014] [error] (13)Permission denied: Init: Can't open server private key file /etc/ssl/certs/localhost.key

权限对我来说没问题,我做错了什么?

2 个答案:

答案 0 :(得分:25)

这是因为您可能首先将文件上传到您的一个主目录,然后将它们移动到/ etc目录中的某个位置。 要更正此文件的上下文,请执行以下命令:

restorecon -RvF /etc/ssl/certs/

并重新启动Apache service httpd restart

希望它有所帮助。

答案 1 :(得分:0)

大卫,

我建议首先更改密钥文件的权限和所有权

更改所有权: sudo chown root:root localhost.key   
更改权限: sudo chmod 600 localhost.key   

要解决这个问题,我需要从密钥

中删除密码

删除密码: openssl rsa -in localhost.key -out localhost_nopp.key   

之后,只需将SSLCertificateKeyFile参数更改为指向localhost_nopp.key并重新启动Apache。

 我猜这会产生一个Apache现在乐于使用的“干净”文件。由于这在开发/测试环境中出现,因此假设删除密码短语不会导致严重的安全问题。

谢谢,

约翰