web-dev-qa-db-fra.com

autorisation nginx refusée pour les fichiers de certificat pour la configuration ssl

J'installe un proxy nginx ssl sur mon serveur Fedora.

J'ai créé une paire de certificats et de clés sous/etc/nginx. Ils ressemblent à ceci:

ls -l /etc/nginx/
total 84
...
-rw-r--r--. 1 root root 1346 Sep 20 12:11 demo.crt
-rw-r--r--. 1 root root 1679 Sep 20 12:11 demo.key

...

En tant que root, j'essaie de démarrer le service nginx:

systemctl start nginx.service

J'obtiens l'erreur suivante:

nginx[30854]: nginx: [emerg]
SSL_CTX_use_certificate_chain_file("/etc/nginx/demo.crt") failed (SSL: error:0200100D:system     library:fopen:Permission denied...e:system lib)
nginx[30854]: nginx: configuration file /etc/nginx/nginx.conf test failed

Y a-t-il un problème avec les autorisations sur ces fichiers?

27
numb3rs1x

Vous avez probablement SELinux en mode d'application (par défaut pour Fedora):

sestatus -v

Si tel est le cas, vérifiez les journaux d'audit, vous devriez trouver l'erreur d'accès:

ausearch -m avc -ts today | audit2allow

Vous avez également probablement déplacé le fichier au lieu de le copier, de sorte que le contexte de sécurité du fichier peut être incorrect.

ls -lrtZ /etc/nginx/demo.* 

et corrigez-le si nécessaire:

restorecon -v -R /etc/nginx
42
dawud

Je suppose que c'est SELinux qui refuse la permission. Vérifiez leur contexte SELinux. Le leur devrait être httpd_config_t. Sinon, exécutez

restorecon /etc/nginx/demo.*

ou

chcon httpd_config_t /etc/nginx/demo.*

en tant que root.

Vous pouvez consulter les journaux sous/var/log/audit/pour voir si c'est SELinux qui refuse l'autorisation. Vous pouvez également exécuter

setenforce 0

mettre SELinux en mode permissif. De cette façon, SELinux génère toujours des messages AVC (dans/var/log/audit /) mais autorise l'accès.

9
jdh8