Aquí está el error que recibo:
Recargar la configuración de nginx: nginx: [emerg] SSL_CTX_use_certificate_chain_file("/path/to/cert.pem") falló (SSL: error:02001002:system Library:fopen:No existe tal archivo o directorio error:20074002:BIO rutinas:FILE_CTRL:system error de lib:140DC002:rutinas SSL:SSL_CTX_use_certificate_chain_file:system lib) nginx: falla en la prueba del archivo de configuración /etc/nginx/nginx.conf
Estoy 100% seguro de que el archivo está en esa ubicación, pero Nginx parece pensar que no está allí. Fusioné domain.crt
y intermediate.crt
manualmente en ese orden. He estado rascándome la cabeza con esto todo el día. Espero que alguien haya visto este error y tenga una solución (y una nota al margen: no es un error al pegar, ya que la ubicación del archivo se muestra solo una vez y no nuevamente después de "no existe tal archivo o directorio").
Respuesta1
¿Está seguro de que el usuario de Nginx tiene acceso al directorio?
También verifique los permisos del .pem
archivo, si Nginx no puede acceder a él, puede mostrarse como 'no such file or directory'
.
Si los permisos son correctos, puede volver a comprobar la ruta real. Cómo lo pegaste (que sé que eliminaste el directorio) no hay un comienzo /
que pueda ser el problema.
EDITAR
Intente mover su configuración SSL a la siguiente estructura (y cámbiela para nginx.conf
que refleje):
sudo mkdir /etc/nginx/ssl
sudo chown -R root:root /etc/nginx/ssl
sudo chmod -R 600 /etc/nginx/ssl
Nginx podría estar fallando .pem
porque los permisos son demasiado abiertos (necesita una fuente para verificar que Nginx hace esto), pero la configuración anterior debería funcionar bien.
Respuesta2
Dejaré mi respuesta a mi problema, en caso de que alguien se encuentre con este tema.
He ejecutado nginx dentro del contenedor acoplable y tengo el mismo error al intentar acceder al archivo de clave privada. Después de rascarme la cabeza durante varias horas, me doy cuenta de que el nginx de mi ventana acoplable no tiene el volumen de montaje que contiene mis datos.
La única opción para agregar volumen de montaje es eliminar y volver a crear el contenedor con la -v
opción:
https://docs.docker.com/engine/tutorials/dockervolumes/
docker run -d -P --name docker-nginx -v /etc/ssl/certs:/etc/ssl/certs nginx
A veces, las cosas triviales son difíciles de ver. Espero que esto ayude.
Respuesta3
Un posible escenario:
En ocasiones puede suceder que al configurar archivos SSL (clave privada y certificado) para el Virtualhost que se está configurando, se haya olvidado especificar la ruta absoluta donde residen estos archivos.
Por ejemplo, si sigues este documento oficial de Nginx:http://nginx.org/en/docs/http/configuring_https_servers.html
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate tdmssl.crt;
ssl_certificate_key tdmssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
Supongamos que almacena los archivos SSL dentro de "/etc/nginx/conf.d":
root@ilg40:/etc/nginx/conf.d# pwd
/etc/nginx/conf.d
root@ilg40:/etc/nginx/conf.d# ll
total 16
drwxr-xr-x 2 root root 4096 Jan 24 17:39 ./
drwxr-xr-x 5 root root 4096 Jan 24 21:15 ../
-rw-r--r-- 1 root root 1359 Jan 24 17:39 tdmssl.crt
-rw-r--r-- 1 root root 1675 Jan 24 17:39 tdmssl.key
¿Lo que sucede?
De forma predeterminada, cuando no se especifica la ruta absoluta para un archivo normal que utiliza Nginx, Nginx buscará los archivos en "/etc/nginx".
De /var/log/nginx/error.log
2017/01/24 21:05:10 [emerg] 13113#0:
BIO_new_file("/etc/nginx/tdmssl.crt")
failed(SSL:error:02001002:system library:fopen:
No such file or directory:fopen('/etc/nginx/tdmssl.crt','r')
error:2006D080:BIO routines:BIO_new_file:no such file)
¿Qué se debe hacer?
Para especificar la ruta absoluta de los archivos adicionales que utiliza su configuración de Virtualhost.
Como esto:
root@ilg40:/etc/nginx/conf.d# cd
root@ilg40:~# cat /etc/nginx/sites-available/tdm
server {
listen 443 ssl;
server_name tjsdatamanager.redtjs.com;
ssl_certificate /etc/nginx/conf.d/tdmssl.crt;
ssl_certificate_key /etc/nginx/conf.d/tdmssl.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
include proxy_params;
proxy_pass http://unix:/etc/tdm/flask/wsgi.sock;
}
}
Respuesta4
He encontrado el mismo problema.
[síntoma]
No puede comenzar con "systemctl restart nginx".
Pero el siguiente comando puede iniciar nginx.
"/usr/sbin/nginx"
[causa]
He utilizado el archivo de certificado directamente descargado del proveedor.
[resuelto]
Copié el texto del certificado y lo pegué en el archivo que creé (por vim).