Permiso nginx denegado a los archivos de certificado para la configuración de SSL

25

Estoy instalando un proxy nginx ssl en mi servidor Fedora.

He creado un certificado y un par de claves en / etc / nginx. Se ven así:

ls -l /etc/nginx/
total 84
...
-rw-r--r--. 1 root root 1346 Sep 20 12:11 demo.crt
-rw-r--r--. 1 root root 1679 Sep 20 12:11 demo.key

...

Como root, estoy tratando de iniciar el servicio nginx:

systemctl start nginx.service

Obtuve el siguiente error:

nginx[30854]: nginx: [emerg]
SSL_CTX_use_certificate_chain_file("/etc/nginx/demo.crt") failed (SSL: error:0200100D:system     library:fopen:Permission denied...e:system lib)
nginx[30854]: nginx: configuration file /etc/nginx/nginx.conf test failed

¿Hay algo mal con los permisos en estos archivos?

numb3rs1x
fuente
Menciona la cadena de certificados ... ¿no es el problema con la autoridad de certificación de esa clave demo.crt? ¿O es un certificado autofirmado? Por cierto, no creo que el archivo de claves deba ser legible por el mundo. Nginx debería abrirlo como root y luego soltar privilegios a cualquier usuario que ejecute.
Aleš Krajník
Es autofirmado, sí. Cambiaré la propiedad, gracias.
numb3rs1x
Asume que el problema está en los certificados, pero el mensaje de error se aplica al archivo de configuración de Nginx.
bbaassssiiee

Respuestas:

39

Probablemente tenga SELinux en modo de aplicación (el valor predeterminado para Fedora):

sestatus -v

Si este es el caso, verifique los registros de auditoría, debería encontrar el error de acceso:

ausearch -m avc -ts today | audit2allow

Probablemente también movió el archivo en lugar de copiarlo, por lo que el contexto de seguridad del archivo podría ser incorrecto.

ls -lrtZ /etc/nginx/demo.* 

y corríjalo si es necesario:

restorecon -v -R /etc/nginx
Dawud
fuente
Muchas gracias. Seguí tus instrucciones y ya no recibo el error. Sucedí mover estos archivos del directorio en el que los creé. Puedo crearlos en el mismo directorio la próxima vez. Aparte de eso, ¿cómo evito que esto suceda en el futuro?
numb3rs1x
Para este caso de uso específico, use en cplugar de mvy aprenda a usar el auditsistema para buscar denegaciones AVC.
Dawud
La ausearch | comando audit2allow. ¿Eso agregó algunos permisos a selinux o fue solo para confirmar que selinux era el problema?
numb3rs1x
Fue solo para confirmar. Lea sus respectivas páginas de manual para los detalles.
Dawud
44
¡Wow gracias! Es bueno tener una respuesta que no sea solo 'deshabilitar SELinux'.
BCran
7

Supongo que es SELinux quien niega el permiso. Verifique su contexto SELinux. La suya debe ser httpd_config_t. Si no, corre

restorecon /etc/nginx/demo.*

o

chcon httpd_config_t /etc/nginx/demo.*

como raíz

Puede verificar los registros en / var / log / audit / para ver si es SELinux el que niega el permiso. También puedes correr

setenforce 0

para configurar SELinux en modo permisivo . De esta manera, SELinux todavía genera mensajes AVC (en / var / log / audit /) pero permite el acceso.

jdh8
fuente