Pregunta El inicio de Nginx falla ssl no existe tal archivo o directorio


Aquí está el error que estoy recibiendo:

Recargando la configuración de nginx: nginx: [emerg]   SSL_CTX_use_certificate_chain_file ("/ path / to / cert.pem") falló (SSL:   error: 02001002: biblioteca del sistema: fopen: no existe tal archivo o directorio   error: 20074002: rutinas BIO: FILE_CTRL: error de sistema lib: 140DC002: SSL   rutinas: SSL_CTX_use_certificate_chain_file: lib del sistema)       nginx: error en el 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é el domain.crt y intermediate.crt manualmente en ese orden. Llevo todo el día rascándome la cabeza con esto. Espero que alguien haya visto este error y tenga una solución (y una nota al margen no es un error al pegar que la ubicación del archivo solo se muestra una vez y no nuevamente después de "no existe ese archivo o directorio").


10
2017-09-08 22:13


origen


path/to/cert.pem es sin duda no una ubicacion valida - Michael Hampton♦
Tienes razón al suponer que no es el camino real. Sin embargo, fácilmente podría hacer que una parte válida de la ubicación. Pero de cualquier manera, no puedo proporcionarle detalles debido a la compañía por la que se está haciendo esto. Tengo que dejar de lado el nombre de usuario. - tgoza


Respuestas:


¿Está seguro de que el usuario de Nginx tiene acceso al directorio?

Compruebe también los permisos de la .pem archivo, si Nginx no puede acceder a él, puede mostrar como 'no such file or directory'.

Si los permisos son correctos, puede volver a verificar la ruta real. Cómo lo pegaste (que sé que quitaste el directorio) no hay principio / cual podria ser el problema

EDITAR

Intente mover su configuración SSL a la siguiente estructura (así como cambiar la nginx.conf reflejar):

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 en su .pem porque los permisos son demasiado abiertos (necesita el código fuente para verificar que Nginx hace esto) pero la configuración anterior debería funcionar bien.


12
2017-09-09 00:27



Revisé dos veces el camino y contiene el / Al principio, así que cambié la pregunta para reflejar eso. El archivo se encuentra en /home/user/subdirs y todos los permisos de archivos y directorios que contiene son propiedad de user.www-data (nombre de usuario nombre_grupo) y 775 conjuntos. Y creo que nginx tiene acceso a cualquier cosa que pertenezca a www-data, aunque podría estar equivocado. - tgoza
Terminó siendo un directorio mal escrito. Gracias - tgoza
Siempre los simples errores que tardan en resolverse :) Me alegro de que lo hayas resuelto. - Brad F Jacobs
¿Cómo se veía exactamente? Tengo el mio en $root/keys/ así que mi línea cert parece ssl_certificate keys/cert.pem... tienen que estar en el webroot? - bright-star
El uso de caminos absolutos hizo el truco. - bright-star


Un posible escenario:

a veces puede suceder que, al configurar archivos SSL (clave privada y certificado) para el host virtual que se está configurando, se olvidó 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 "/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 pasa? 

De forma predeterminada, cuando no se especifica la ruta absoluta para un archivo ordinario que utiliza Nginx, Nginx buscará los archivos en "/ etc / nginx"

Desde /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é hay que hacer?

Para especificar la ruta absoluta de los archivos adicionales que utiliza su configuración de Virtualhost.

Me gusta 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;
    }

}

2
2018-01-24 21:55





Dejaré mi respuesta a mi problema, en caso de que alguien se encuentre con este tema.

Tengo nginx ejecutado dentro del contenedor docker 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 docker no tiene el volumen de montaje que contiene mis datos.

La única opción para agregar un volumen de montaje es eliminar y volver a crear el contenedor con el -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.


2
2018-02-21 04:12





Tuve el mismo problema. Tuve que cambiar el / etc / nginx / sites-enabled / default & default.save archivos que se agregaron automáticamente el nombre de mi sitio sin el .com después de que durante el proceso de instalación, Cual era el problema en mi instancia. Para abreviar, estas dos líneas debían cambiarse en mi / etc / nginx / sites-enabled / default. Tenga en cuenta que este archivo se muestra con un icono de acceso directo en mi sistema de archivos, pero pude hacer clic derecho en el archivo y editarlo con la opción "Editar / Editor interno". 

HTTPS: solicitudes de proxy en la aplicación Node.js local # HTTPS: solicitudes de proxy en la aplicación Node.js local: servidor {         escucha 443;         server_name switchmagic.com;

    ssl on;
    # Use certificate and key provided by Let's Encrypt:
    ssl_certificate /etc/letsencrypt/live/switchmagic.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/switchmagic.com/privkey.pem;

Cuando revisé los archivos y agregué el .com, que es la convención de nomenclatura que usé para agregar el archivo, a las referencias de Switchmagic en los directorios de archivos que estaban arrojando los errores, ¡todo estuvo bien! Encontré a muchos Devs que hacían la misma pregunta, así que quería lanzar mi solución para ayudar, ya que las respuestas que encontré eran principalmente sobre permisos de root, pero los permisos de root no eran el problema en mi caso. Rock en Devs.


-1
2018-04-29 06:41