NGINX SSL 证书权限 SSL 错误:0200100D:system

Piy*_*tel 3 ssl nginx lets-encrypt

在 NGINX 服务器中出现以下错误,使用 LetsEncrypts 免费 SSL 证书。

2016/06/23 19:53:13 [warn] 5013#0:“user”指令只有在主进程以超级用户权限运行时才有意义,在 /etc/nginx/nginx.conf:1 中被忽略

2016/06/23 19:53:13 [emerg] 5013#0:BIO_new_file("/etc/letsencrypt/live/abc/fullchain.pem") 失败(SSL:错误:0200100D:系统库:fopen:权限被拒绝: fopen('/etc/letsencrypt/live/abc/fullchain.pem','r') error:2006D002:BIOroutines:BIO_new_file:system lib)

小智 14

如果文件上的 chmod 和 chown 都是正确的,这可能是因为您将文件复制到文件夹中 - 也许是主文件夹(例如) - 然后将文件 mv'd 到 NGINX 的位置。SeLinux 会记住原始文件创建位置,并在文件移动到的任何位置应用权限 - 将 SeLinux 权限重置为当前位置/文件权限使用

restorecon filename

这通常会对其进行排序


小智 9

这两个问题都有一个根本原因。

  1. 当您尝试使用非 root 用户启动 nginx 时,通常会发生此错误。您可以尝试以 root 身份或在 sudo 下启动。

  2. 看起来你对你的 pem 文件有权限,当你从非 root 用户启动它时不允许 nginx 读取它,你可以尝试更改文件权限或以 root 或在 sudo 下启动 nginx。

  • 愚蠢地忘记以 root 身份运行“service nginx restart”。sudo-ing 它为我解决了这个问题 (2认同)

小智 7

如果您nginx从 www-data 用户运行工作进程,它只需要设置/etc/letsencrypt/文件夹的权限:

chown -R www-data:www-data /etc/letsencrypt/
chmod -R 755 /etc/letsencrypt/
Run Code Online (Sandbox Code Playgroud)

它应该有效


小智 6

你好我也遇到了同样的问题。

setenforce 0
Run Code Online (Sandbox Code Playgroud)

就这样解决了。

  • 这可能会影响您的整个系统安全,我建议正确设置 SELinux 而不是停用它。 (3认同)