对于sslconfiguration的证书文件,nginx权限被拒绝

我在我的Fedora服务器上安装了一个nginx ssl代理。

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

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 ... 

作为根,我试图启动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 

这些文件的权限是否有问题?

您可能拥有SELinux强制执行模式(Fedora的默认模式):

 sestatus -v 

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

 ausearch -m avc -ts today | audit2allow 

您也可能移动了文件而不是复制文件,所以文件的安全上下文可能是错误的。

 ls -lrtZ /etc/nginx/demo.* 

并根据需要进行更正:

 restorecon -v -R /etc/nginx 

我猜这是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 /中),但是允许访问。