nginx 无法加载文件 - ssl 证书 - 即使它显然存在

Jen*_*nov 9 ssl nginx

我想在 nginx 中使用 ssl。我创建了必要的证书:

[root@arch ssl]# pwd
/etc/nginx/ssl
[root@arch ssl]# ls -l
total 12
-rwx------ 1 root root 1346 Aug  3 14:36 server.crt
-rwx------ 1 root root 1115 Aug  3 14:36 server.csr
-rwx------ 1 root root 1743 Aug  3 14:35 server.key
Run Code Online (Sandbox Code Playgroud)

但是 nginx 无法加载这些文件。它说找不到它们:

systemctl -l status nginx

nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled)
Active: failed (Result: exit-code) since Sun 2014-08-03 14:50:04 EDT; 21min ago
Process: 21391 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; error_log stderr; (code=exited, status=1/FAILURE)
Main PID: 16458 (code=exited, status=0/SUCCESS)

Aug 03 14:50:04 arch nginx[21391]: 2014/08/03 14:50:04 [emerg] 21391#0:     BIO_new_file("/etc/gninx/ssl/server.crt") failed (SSL: error:02001002:system     library:fopen:No such file or directory:fopen('/etc/gninx/ssl/server.crt','r')     error:2006D080:BIO routines:BIO_new_file:no such file)
Aug 03 14:50:04 arch systemd[1]: nginx.service: control process exited, code=exited     status=1
Aug 03 14:50:04 arch systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Aug 03 14:50:04 arch systemd[1]: Unit nginx.service entered failed state.
Run Code Online (Sandbox Code Playgroud)

这是我的配置:

server {


   server_name localhost;
   listen 443;
   ssi on;        


   ssl on;
   ssl_certificate /etc/gninx/ssl/server.crt;
   ssl_certificate_key /etc/nginx/ssl/server.key;

   client_max_body_size 4G;



   location =  / {
       ...
   }
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我错过了什么?

提前感谢您的帮助和时间。

杰尼亚。

eri*_*icx 7

我敢打赌nginx不是以 root 身份运行。您对密钥/证书对的权限只能由 root 读取。

我通常创建一个www组并制作密钥root:www 440和证书root:www 444(证书是为每个连接公开发送的;因此没有理由对其保密;只需确保它不可编辑即可)。然后我确保apache(或nginx根据您的喜好)以www:www.

--oh yah... 确保您的密钥上没有密码;或者如果你这样做了(它〜是〜更好的安全性),请确保nginx有一个条款允许您在启动时提交密码短语。(抱歉,我从未尝试过使用nginx)。然后准备它挂起并等待每次重新启动,直到您可以访问控制台。


小智 7

问题是路由,因为你设置了 /etc/ gninx /ssl/server.crt; 这应该是/ etc / nginx的/ssl/server.crt;