Les clés privées doivent avoir une lecture fortement restreinte. Définition des autorisations sur 600
et détenue par root
devrait marcher. Cependant, il existe d'autres paramètres d'autorisations sécurisés - Ubuntu stocke les clés dans un répertoire avec le propriétaire root
et groupe ssl-cert
et autorisations 710
. Cela signifie que seuls les membres de ssl-cert
peut accéder à tous les fichiers de ce répertoire. Les clés privées ont alors le groupe ssl-cert
, propriétaire root
, et autorisations 640
.
J'ai eu un problème lors de la configuration de nginx et je suis tombé sur cette question. L'autre réponse ici a déjà répondu directement à la question, mais j'ai pensé qu'un peu plus d'informations seraient utiles.
Normalement, nginx est démarré en tant que root
utilisateur par les scripts d'initialisation / systemd. Cependant, nginx a également la possibilité de basculer vers un utilisateur moins privilégié pour les opérations normales. Ma question était donc de savoir quel utilisateur est utilisé pour charger le certificat/la clé ssl ? L'utilisateur privilégié initial ou celui vers lequel est passé ?
Heureusement, nginx utilise les autorisations initiales pour lire le certificat et la clé en mémoire avant de changer d'utilisateur. Donc, normalement, vous pouvez vraiment laisser les clés avec des autorisations très restreintes car elles sont chargées par nginx lorsqu'il est toujours en cours d'exécution en tant que root
.
Le problème que je rencontrais et qui m'a amené ici était que je définissais ssl_certificate
uniquement dans mon server
blocs en nginx.conf
. J'obtenais des erreurs comme [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking
quand je savais très bien que mes clés étaient au bon endroit. Ce problème était que je n'avais pas de ssl_certificate
au http
niveau de nginx.conf
.
J'espère que cela sera utile à quelqu'un.