Permisos para la clave SSL?

15

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é?

ChocoDeveloper
fuente

Respuestas:

15

Las claves privadas deberían tener una lectura muy restringida. Establecer permisos 600y propiedad de rootdebería funcionar. Sin embargo, hay otras configuraciones de permisos seguras: Ubuntu almacena las claves en un directorio con propietario rooty grupo ssl-certy permisos 710. Esto significa que solo los miembros de ssl-certpueden acceder a cualquier archivo en ese directorio. Las claves privadas tienen grupo ssl-cert, propietario rooty permisos 640.

cpast
fuente
2
Agregaré, por especificidad: al usar nginx en CentOS 7, no es necesario hacer que el certificado o la clave privada puedan ser leídos por aquellos en el nginxgrupo. El servidor web podrá usarlos incluso si son legibles solo por root(como deberían ser).
3

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 rootusuario 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_certificatesolo en mis serverbloques nginx.conf. Recibía errores como [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingcuando sabía muy bien que mis llaves estaban en el lugar correcto. Ese problema era que yo no tenía una ssl_certificateen el httpnivel de nginx.conf.

Espero que esto sea útil para alguien.

Cameron Tacklind
fuente