nginx权限被拒绝用于ssl配置的证书文件


25

我正在Fedora服务器上安装Nginx ssl代理。

我已经在/ etc / nginx下创建了一个证书和密钥对。他们看起来像这样:

ls -l /etc/nginx/
total 84
...
-rw-r--r--. 1 root root 1346 Sep 20 12:11 demo.crt
-rw-r--r--. 1 root root 1679 Sep 20 12:11 demo.key

...

作为root,我正在尝试启动nginx服务:

systemctl start nginx.service

我收到以下错误:

nginx[30854]: nginx: [emerg]
SSL_CTX_use_certificate_chain_file("/etc/nginx/demo.crt") failed (SSL: error:0200100D:system     library:fopen:Permission denied...e:system lib)
nginx[30854]: nginx: configuration file /etc/nginx/nginx.conf test failed

这些文件的权限有问题吗?


它提到了证书链...那是demo.crt密钥的证书颁发机构的问题吗?还是自签名证书?顺便说一句,我不认为密钥文件应该是世界可读的。Nginx应该以root用户身份打开它,然后将特权授予以它运行的任何用户。
强麦Krajník

它是自签名的,是的。我将更改所有权,谢谢。
numb3rs1x 2013年

您假设问题出在证书上,但是错误消息适用于Nginx的配置文件。
bbaassssiiee

Answers:


39

您可能在强制模式下使用SELinux(Fedora的默认设置):

sestatus -v

如果是这种情况,请检查审核日志,您应该找到访问错误:

ausearch -m avc -ts today | audit2allow

您还可能移动了文件而不是复制了文件,因此文件的安全性上下文可能是错误的。

ls -lrtZ /etc/nginx/demo.* 

并在需要时更正它:

restorecon -v -R /etc/nginx

非常感谢你。我已按照您的指示进行操作,但不再出现错误。我确实碰巧将这些文件从创建它们的目录中移出了。下次可以在同一目录中创建它们。除此之外,我如何防止这种情况将来发生?
numb3rs1x 2013年

对于此特定用例,请使用cp代替mv并学习使用audit系统查找AVC拒绝。
dawud

ausearch | audit2allow命令。这是否为selinux添加了一些权限,或者只是为了确认selinux是问题所在?
numb3rs1x

这只是为了确认。阅读各自的手册页以获取详细信息。
dawud

4
哇谢谢!回答不仅仅是“禁用SELinux”,这是很好的。
BCran 2015年

7

我猜是SELinux拒绝许可。检查他们的SELinux上下文。他们的应该是httpd_config_t。如果没有,请运行

restorecon /etc/nginx/demo.*

要么

chcon httpd_config_t /etc/nginx/demo.*

作为根。

您可以在/ var / log / audit /下查看日志,以查看是否是SELinux拒绝权限。你也可以跑

setenforce 0

将SELinux设置为允许模式。这样,SELinux仍会生成AVC消息(在/ var / log / audit /中),但允许访问。

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.