num*_*s1x 33 ssl nginx ssl-certificate
我正在我的 Fedora 服务器上安装一个 nginx ssl 代理。
我在 /etc/nginx.conf 下创建了一个证书和密钥对。它们看起来像这样:
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
...
Run Code Online (Sandbox Code Playgroud)
作为 root,我正在尝试启动 nginx 服务:
systemctl start nginx.service
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
这些文件的权限有问题吗?
daw*_*wud 49
您可能将 SELinux 置于强制模式(Fedora 的默认设置):
sestatus -v
Run Code Online (Sandbox Code Playgroud)
如果是这种情况,请检查审计日志,您应该会发现访问错误:
ausearch -m avc -ts today | audit2allow
Run Code Online (Sandbox Code Playgroud)
您也可能移动了文件而不是复制它,因此文件的安全上下文可能是错误的。
ls -lrtZ /etc/nginx/demo.*
Run Code Online (Sandbox Code Playgroud)
并在需要时更正:
restorecon -v -R /etc/nginx
Run Code Online (Sandbox Code Playgroud)
小智 10
我猜是 SELinux 拒绝了许可。检查他们的 SELinux 上下文。他们的应该是httpd_config_t。如果没有,运行
restorecon /etc/nginx/demo.*
Run Code Online (Sandbox Code Playgroud)
或者
chcon httpd_config_t /etc/nginx/demo.*
Run Code Online (Sandbox Code Playgroud)
作为根。
你可以查看 /var/log/audit/ 下的日志,看看是否是 SELinux 拒绝了权限。你也可以运行
setenforce 0
Run Code Online (Sandbox Code Playgroud)
将 SELinux 设置为许可模式。这样,SELinux 仍会生成 AVC 消息(在 /var/log/audit/ 中)但允许访问。
归档时间: |
|
查看次数: |
60135 次 |
最近记录: |