Estoy tratando de configurar una conexión segura (https) en nginx.
Pero estoy un poco preocupado por los permisos de la clave privada, que no se mencionan en ningún tutorial.
¿Debo cambiarlos? ¿A qué?
Estoy tratando de configurar una conexión segura (https) en nginx.
Pero estoy un poco preocupado por los permisos de la clave privada, que no se mencionan en ningún tutorial.
¿Debo cambiarlos? ¿A qué?
Respuestas:
Las claves privadas deberían tener una lectura muy restringida. Establecer permisos 600
y propiedad de root
debería funcionar. Sin embargo, hay otras configuraciones de permisos seguras: Ubuntu almacena las claves en un directorio con propietario root
y grupo ssl-cert
y permisos 710
. Esto significa que solo los miembros de ssl-cert
pueden acceder a cualquier archivo en ese directorio. Las claves privadas tienen grupo ssl-cert
, propietario root
y permisos 640
.
Tuve un problema al configurar nginx y me encontré con esta pregunta. La otra respuesta aquí ya ha respondido directamente a la pregunta, pero pensé que sería útil un poco más de información.
Normalmente, nginx se inicia como root
usuario mediante init scripts / systemd. Sin embargo, nginx también tiene la capacidad de cambiar a un usuario menos privilegiado para las operaciones normales. Entonces, mi pregunta fue ¿qué usuario se utiliza para cargar el certificado / clave SSL? ¿El usuario privilegiado inicial o al que se cambió?
Afortunadamente, nginx usa los permisos iniciales para leer el certificado y la clave en la memoria antes de cambiar de usuario. Entonces, normalmente, realmente puede dejar las claves con permisos muy restringidos, ya que nginx las carga cuando todavía se está ejecutando como root
.
El problema con el que me encontraba y que me hizo caer aquí fue que estaba definiendo ssl_certificate
solo en mis server
bloques nginx.conf
. Recibía errores como [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
cuando sabía muy bien que mis llaves estaban en el lugar correcto. Ese problema era que yo no tenía una ssl_certificate
en el http
nivel de nginx.conf
.
Espero que esto sea útil para alguien.
nginx
grupo. El servidor web podrá usarlos incluso si son legibles solo porroot
(como deberían ser).