NGINX上的SSL证书无法加载

时间:2020-02-20 11:09:13

标签: ssl nginx

我正在尝试将从Godaddy获得的SSL证书安装到我的NGINX服务器上。我肯定我的所有路径都正确,并且据我了解我的服务器配置正确,但是仍然出现以下错误。

Feb 20 11:06:35 my.server.com nginx[6173]: nginx: [emerg] cannot load certificate "/etc/ssl/certs/certificate.crt": BIO_new_file() failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/certs/certificate.crt','r') error:2006D002:BIO routines:BIO_new_file:system lib)
Feb 20 11:00:01 my.server.com nginx[5969]: nginx: configuration file /etc/nginx/nginx.conf test failed

以下是我的SSL配置。我已将其放入路径/etc/nginx/conf.d/ssl.conf中的文件中。

server {
    listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  my.server.com;
        root         /usr/share/nginx/html;

        ssl_certificate /etc/ssl/certs/certificate.crt;
        ssl_certificate_key /etc/ssl/private/private.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
               proxy_pass http://[MY_IP_ADDRESS]:8443;
               proxy_http_version 1.1;
               proxy_set_header Upgrade $http_upgrade;
               proxy_set_header Connection 'upgrade';
               proxy_set_header Host $host;
               proxy_cache_bypass $http_upgrade;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
    }
}

这似乎是一个权限问题,但是我运行chown来更改对root用户的权限,并且我已通过chmod将文件权限更改为600。这不正确吗?有人可以给我一些如何解决此问题的指导吗?

**更新**

我确实进行了检查,发现SSL证书不属于root用户。我已将所有SSL文件修改为由根所有者和组所有,并将文件许可权更改为600,并尝试了700。运行sudo ls -l

时,此输出如下
-rwx------. 1 root root 7072 Feb 20 10:41 my.server.com.chained.crt
-rwx------. 1 root root 2277 Feb 20 10:36 my.server.com.crt
-rwx------. 1 root root 4795 Feb 20 10:39 intermediate.crt

我仍然遇到相同的错误。我还尝试了普通证书和完整链证书。有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:3)

我终于解决了我的问题。原来,当我移动文件(mv)时,它更改了文件的安全性上下文,因此使它们对于nginx不可读。我通过在nginx根文件夹中运行以下命令解决了该问题。

restorecon -v -R /etc/nginx

我从这个post找到了。

感谢所有帮助!