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

Dav*_*ams 9 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
Run Code Online (Sandbox Code Playgroud)

但是当我重新启动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
Run Code Online (Sandbox Code Playgroud)

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

Sfb*_*auw 32

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

restorecon -RvF /etc/ssl/certs/

并重新启动Apache service httpd restart.

希望能帮助到你.

  • 谢谢!另外“restorecon -RvF /etc/ssl/private/”对我来说也是必要的。 (3认同)

jbo*_*les 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 现在很乐意使用的“干净”文件。由于这似乎是开发/测试环境,因此假设删除密码不会导致重大安全问题。

谢谢,

约翰