O problema era a rota, como você definiu /etc/gninx/ssl/server.crt; qual deve ser /etc/nginx/ssl/server.crt;
Eu quero usar ssl com nginx. Eu crio os certificados necessários:
[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
Mas o nginx não consegue carregar esses arquivos. Diz que não pode encontrá-los:
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.
Esta é a configuração que tenho:
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 = / {
...
}
}
Alguém pode me dizer, por favor, o que eu estou perdendo?
Agradecemos desde já pela sua ajuda e tempo.
Jenia.
O problema era a rota, como você definiu /etc/gninx/ssl/server.crt; qual deve ser /etc/nginx/ssl/server.crt;
Aposto que nginx
não está sendo executado como root. As permissões que você tem no par chave / cert são legíveis apenas pelo usuário root.
Geralmente, crio um grupo www
e faço a chave root:www 440
e o cert root:www 444
(o certificado é enviado publicamente para cada conexão; portanto, não há motivos para mantê-lo secreto; apenas certifique-se de que ele não possa ser editado) . Então, certifico-me de que apache
(ou nginx
, como preferir) seja executado como www:www
.
- oh yah ...
Certifique-se de que você não tenha uma frase secreta na chave; ou se você fizer isso (é ~ melhor segurança), certifique-se de que nginx
tenha uma provisão para permitir que você envie a frase secreta ao iniciá-la. (desculpe, eu nunca tentei usar nginx
). E então, prepare-se para que ele seja interrompido e aguarde toda vez que ele for reiniciado até que você consiga chegar ao console.