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