Autorisations pour la clé SSL?

15

J'essaie de configurer une connexion sécurisée (https) dans nginx.

Mais je suis un peu inquiet au sujet des autorisations de la clé privée, qui ne sont mentionnées dans aucun didacticiel.

Dois-je les changer? À quoi?

ChocoDeveloper
la source

Réponses:

15

Les clés privées devraient avoir une lecture fortement restreinte. La définition des autorisations sur 600et détenues par rootdevrait fonctionner. Cependant, il existe d'autres paramètres d'autorisations sécurisées - Ubuntu stocke les clés dans un répertoire avec le propriétaire root, le groupe ssl-certet les autorisations 710. Cela signifie que seuls les membres de ssl-certpeuvent accéder aux fichiers de ce répertoire. Les clés privées ont alors le groupe ssl-cert, le propriétaire rootet les autorisations 640.

cpast
la source
2
J'ajouterai, pour plus de précision: lors de l'utilisation de nginx sur CentOS 7, il n'est pas nécessaire de rendre le certificat ou la clé privée lisible par ceux du nginxgroupe. Le serveur Web pourra les utiliser même s'ils ne sont lisibles que par root(comme il se doit).
3

J'ai eu un problème lors de la configuration de nginx et 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 rootqu'utilisateur par init scripts / systemd. Cependant, nginx a également la possibilité de basculer vers un utilisateur moins privilégié pour les opérations normales. Donc, ma question était quel utilisateur est utilisé pour charger le certificat / clé SSL? L'utilisateur privilégié initial ou celui qui est basculé vers?

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 limitées car elles sont chargées par nginx quand il fonctionne toujours en tant que root.


Le problème que je rencontrais qui m'a atterri ici était que je ne définissais ssl_certificateque dans mes serverblocs nginx.conf. Je recevais des erreurs comme [error] 18606#18606: *311 no "ssl_certificate" is defined in server listening on SSL port while SSL handshakingquand je savais très bien que mes clés étaient au bon endroit. Ce problème était que je n'en avais pas ssl_certificateau httpniveau de nginx.conf.

J'espère que cela est utile pour quelqu'un.

Cameron Tacklind
la source