我想用nginx来使用ssl。 我创build了必要的证书:
[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
但是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.
这是我有的configuration:
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 = / { ... } }
任何人都可以告诉我,我错过了什么?
预先感谢您的善意帮助和时间。
Jenia。
我敢打赌, nginx
并没有以root身份运行。 您在密钥/证书对上的权限只能由root读取。
我通常会创build一个www
组,然后创build密钥root:www 440
和cert root:www 444
(证书是公开发送给每个连接的,所以没有理由保密,只要确保它是不可编辑的)。 然后我确定apache
(或者你喜欢的nginx
)像www:www
一样运行。
– 哦,呃…确保你没有密钥的密码; 或者如果你这样做的话(更好的安全性),确保nginx
有一个规定,允许你在启动时提交密码短语。 (对不起,我从来没有试过使用nginx
)。 然后准备好挂起并等待每次重新启动,直到可以到达控制台。
问题是路由,如你设置/ etc / gninx /ssl/server.crt; 应该是/ etc / nginx /ssl/server.crt;