Sur Ubuntu, il semble que le meilleur endroit pour une clé privée utilisée pour signer un certificat (pour une utilisation par nginx) soit dans /etc/ssl/private/
Cette réponse ajoute que le certificat doit aller dans /etc/ssl/certs/
mais cela semble être un endroit dangereux. Faire .crt
les fichiers doivent être conservés en toute sécurité ou sont-ils considérés comme publics?
Le fichier .crt est envoyé à tout ce qui se connecte; c'est public. (chown root:root
et chmod 644
)
Pour ajouter à l'emplacement de la clé privée; assurez-vous de le fixer correctement ainsi que de l'avoir dedans. (chown root:ssl-cert
et chmod 640
)
Peu importe où vous les mettez tant que vous protégez correctement votre fichier (s) de clé privée . Le certificat public est public; aucune protection nécessaire - privilèges du serveur ou autre.
Pour développer la réponse, je n'utilise pas l'emplacement par défaut /etc/ssl
.
Il est plus facile pour moi de garder toutes les miennes dans une zone distincte à cause des sauvegardes et d'autres raisons.
Pour Apache SSL, je garde le mien dans /etc/Apache2/ssl/private
ou "zone racine" similaire dans /etc/
.
Ce message est destiné à Ubuntu (Debian) + Apache, mais devrait fonctionner sur la plupart des systèmes -
Il suffit d'appliquer les autorisations et de mettre à jour l'emplacement/le chemin dans la configuration donnée (Apache/nginx/etc).
Si les fichiers de clés SSL sont correctement protégés (répertoire et fichiers), tout ira bien. Notez les notes !
Sudo mkdir /etc/Apache2/ssl
Sudo mkdir /etc/Apache2/ssl/private
Sudo chmod 755 /etc/Apache2/ssl
Sudo chmod 710 /etc/Apache2/ssl/private
Remarque:chmod 710
les soutiens ssl-cert
groupe sous Ubuntu. (Voir commentaires)
Définition de l'autorisation sur 700
sur /etc/Apache2/ssl/private
fonctionnera également très bien.
Mettez public www certificat (s) SSL avec certificat (s) intermédiaire (s) dans
/etc/Apache2/ssl
Mettez privé clé (s) SSL dans/etc/Apache2/ssl/private
Sudo chown -R root:root /etc/Apache2/ssl/
Sudo chown -R root:ssl-cert /etc/Apache2/ssl/private/
Remarque:
Si vous n'avez pas de groupe ssl-cert, utilisez simplement 'root: root' sur la ligne ci-dessus ou sautez la 2ème ligne.
Certificat (s) public (s)
Sudo chmod 644 /etc/Apache2/ssl/*.crt
Clé (s) privée (s)
Sudo chmod 640 /etc/Apache2/ssl/private/*.key
Remarque:
L'autorisation de groupe est définie sur LIRE (640) en raison du groupe Ubuntu ssl-cert. '600' est également très bien.
Sudo a2enmod ssl
(voir dernier paragraphe) *
Sudo nano /etc/Apache/sites-available/mysiteexample-ssl.conf
Sudo a2ensite mysiteexample-ssl
# ^^^^^^^^^^^^^^^^^ <-Substitute your ".conf" filename(s)
Sudo service Apache2 restart
ou
Sudo systemctl restart Apache2.service
* Encore une fois, cela va au-delà de la question, mais vous pouvez copier le fichier de configuration du site SSL Apache par défaut (Sudo cp /etc/Apache2/sites-available/default-ssl.conf /etc/Apache2/sites-available/mysiteexample-ssl.conf
) comme bon point de départ/exemple de directives/répertoires par défaut normalement utilisés sous un simple fichier de configuration (Ubuntu/Debian) Apache/SSL. Il pointe normalement vers un certificat SSL auto-signé + clé (snakeoil), des bundles CA, ainsi que des directives communs utilisés pour un site SSL donné.
Après la copie, modifiez simplement le nouveau fichier .conf et ajoutez/supprimez/mettez à jour au besoin avec les nouvelles informations/chemins ci-dessus, puis exécutez Sudo a2ensite mysiteexample-ssl
pour l'activer.
Toutes les réponses ici semblent OK, mais je veux mentionner une chose que j'ai trouvée est un problème ... Si vous devez concaténer votre certificat avec des intermédiaires ou des racines pour créer un fichier de chaîne, ne pas = mettre ça dans /etc/ssl/certs
, parce que quand c_rehash
est exécuté, il peut créer des liens symboliques de hachage vers vos certificats en raison des racines ou des intermédiaires qu'ils contiennent.
Ensuite, plus tard, si vos certificats ont expiré et que vous les supprimez, et ne savez pas pour relancer c_rehash
, vous avez peut-être brisé des liens symboliques de hachage dans votre /etc/ssl/certs
répertoire, et des choses étranges commencent à se produire lorsque votre machine locale essaie de se connecter à elle-même via SSL, et qu'elle ne trouve pas les racines à valider. Par exemple, avec curl, j'ai soudainement commencé à obtenir:
curl: (60) SSL certificate problem: unable to get issuer certificate
Peu de temps après le nettoyage de certains anciens fichiers .crt et .pem concaténés que j'avais dans /etc/ssl/certs
.
Stocker au moins vos chaînes ailleurs évite ce problème. J'ai fini par faire un /etc/ssl/local_certs
pour conserver mes certificats et chaînes, afin qu'ils ne soient pas perdus dans le désordre des certificats CA que vous trouverez dans /etc/ssl/certs
Il n'y a pas vraiment d'endroit dangereux si l'autorisation pour les fichiers/répertoires individuels est définie sur quelque chose comme chown root :0 private.key
et chmod 600 private.key
pour que seul root puisse le lire. Les CSR et les fichiers de certificats sont moins sensibles que vous le dites.
Avec ces autorisations, les chemins que vous mentionnez et/usr/local/ssl devraient convenir.
Les emplacements sont corrects:
/etc/ssl/certs/
pour .crt
fichier/etc/ssl/private
pour .key
fichierPropriétaire doit être root:root
pour les deux (utilisez Sudo chmod root:root <file>
à modifier si nécessaire).
Autorisations:
644
pour .crt
fichier600
pour .key
fichierCela fonctionnera pour nginx
.