Tâche #20513
Scénario #21863: Corrections let's encrypt
letsencrypt, ead-server non accessible
Description
Test effectué sur un Eolebase 2.6.1 à jour
Lors du choix de letsencrypt, ead-server ne démarre pas correctement
(extrait des logs ead-server)
ead-server[21012]: exceptions.IOError: [Errno 13] Permission denied: '/etc/ssl/letsencrypt/conf/live/**********/cert.pem' ead-server[21012]: Failed to load application: [Errno 13] Permission denied: '/etc/ssl/letsencrypt/conf/live/**********/cert.pem'
Après une première analyse, les droits sur les dossiers live et archive (/etc/ssl/letsencrypt/conf/) ne sont pas corrects :
drwx------ 3 root root 4096 mai 11 15:46 archive/ drwx------ 3 root root 4096 mai 11 15:46 live/
L'ajout de +rx sur ces deux dossiers permettent d'accédé à l'EAD.
Demandes liées
Historique
#1 Mis à jour par Christophe Dezé il y a presque 7 ans
j'ai essayé de mettre un certificat letsencrypt sur un amon 2.4.2 , nginx pas de problème , par contre,effectivement, l'EAD server n'aime pas trop
root@pf-amon.cfa-44.in.ac-nantes.fr:/usr/share# ll /etc/ssl/certs/eole.crt lrwxrwxrwx 1 root root 50 mai 22 08:47 /etc/ssl/certs/eole.crt -> /etc/letsencrypt/live/releve.cfa-en-44.fr/cert.pem root@pf-amon.cfa-44.in.ac-nantes.fr:/usr/share# ll /etc/letsencrypt/live/releve.cfa-en-44.fr/cert.pem lrwxrwxrwx 1 root root 43 mai 22 08:40 /etc/letsencrypt/live/releve.cfa-en-44.fr/cert.pem -> ../../archive/releve.cfa-en-44.fr/cert1.pem root@pf-amon.cfa-44.in.ac-nantes.fr:/usr/share# ll /etc/letsencrypt/live/releve.cfa-en-44.fr/cert.pem lrwxrwxrwx 1 root root 43 mai 22 08:40 /etc/letsencrypt/live/releve.cfa-en-44.fr/cert.pem -> ../../archive/releve.cfa-en-44.fr/cert1.pem root@pf-amon.cfa-44.in.ac-nantes.fr:/usr/share# ll /etc/letsencrypt/archive/releve.cfa-en-44.fr/cert1.pem -rw-r--r-- 1 root root 1838 mai 22 08:40 /etc/letsencrypt/archive/releve.cfa-en-44.fr/cert1.pem /usr/bin/python /usr/bin/twistd -noy /usr/share/ead2/backend/eadserver.tac Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 652, in run runApp(config) File "/usr/lib/python2.7/dist-packages/twisted/scripts/twistd.py", line 23, in runApp _SomeApplicationRunner(config).run() File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 386, in run self.application = self.createOrGetApplication() File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 451, in createOrGetApplication application = getApplication(self.config, passphrase) --- <exception caught here> --- File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 462, in getApplication application = service.loadApplication(filename, style, passphrase) File "/usr/lib/python2.7/dist-packages/twisted/application/service.py", line 405, in loadApplication application = sob.loadValueFromFile(filename, 'application', passphrase) File "/usr/lib/python2.7/dist-packages/twisted/persisted/sob.py", line 210, in loadValueFromFile exec fileObj in d, d File "/usr/share/ead2/backend/eadserver.tac", line 41, in <module> context = ServerContextFactory() File "/usr/share/ead2/lib/libsecure.py", line 39, in __init__ self.cert = crypto.load_certificate(crypto.FILETYPE_PEM, open(cert_file).read()) exceptions.IOError: [Errno 13] Permission non accordée: u'/etc/ssl/certs/eole.crt'
#2 Mis à jour par Laurent Flori il y a presque 7 ans
- Fichier eadserver.patch Voir ajouté
- Fichier libsecure.patch Voir ajouté
Les certificats générés pas letsencrypt sont avec des permissions 600 du coup seul root peut les lire. Pour pouvoir lancer l'EAD2 avec ce type de certificats:
il faut devenir root dans le fichier /usr/share/ead2/lib/libsecure.py plutôt que dans le fichier /usr/share/ead2/backend/lib/eadserver.py.
NB: On ne peut pas importer les fonctions _gain_privileges et _drop_privileges depeuis eadserver.py dans libsecure.py pour cause d'import circulaire.
Solution :
Déplacer les 2 fonctions ci-dessus dans libsecure et les importer dans eadserver.py
(ne pas oublier d'ajouter le 2 lignes d'import suivantes à libsecure.py)
from os import seteuid, setegid, getuid, getgid from ead2.backend.config.config import NOBODY_UID, NOBODY_GID
J'ajoute deux patchs pour les deux fichiers.
#3 Mis à jour par Laurent Flori il y a presque 7 ans
Pour valider la solution précédente, j'ai passé tout /etc/ssl/certs/eole en mode 640.
On peut alors (avec les patch de la note précédente) avoir accès a l'ead2
Mais le reconfigure fait apparaitre des problèmes avec les services openldap et ejabberd:
Pour ces deux services, on ajouter un groupe sur le système, ajouter les deux utilisateurs des services précédents à ce nouveau groupe et donner à ce groupe le droit de lire /etc/ssl/certs/eole.*
addgroup eolecert chgrp eolecert /etc/ssl/certs/eole* adduser ejabberd eolecert adduser openldap eolecert
Les droits des fichiers sont donc maintenant:
root@scribe:~# ls -al /etc/ssl/certs/eole.* -rw-r----- 1 root eolecert 1476 mai 20 07:52 /etc/ssl/certs/eole.crt -rw-r----- 1 root eolecert 1679 mai 20 07:52 /etc/ssl/certs/eole.key -rw-r----- 1 root eolecert 3155 mai 22 16:10 /etc/ssl/certs/eole.pem
#4 Mis à jour par Laurent Flori il y a presque 7 ans
- Assigné à mis à Laurent Flori
#5 Mis à jour par Emmanuel GARETTE il y a plus de 6 ans
- Tâche parente mis à #21863
#6 Mis à jour par Emmanuel GARETTE il y a plus de 6 ans
J'ai fait différamment, je copie les certificats et change les droits (plus de problème de droit).
Par contre impossible de se logger sur l'EAD, il ne valide pas les certificats let's encrypt.
#7 Mis à jour par Scrum Master il y a plus de 6 ans
- Statut changé de Nouveau à En cours
#8 Mis à jour par Scrum Master il y a plus de 6 ans
- Description mis à jour (diff)
- Assigné à changé de Laurent Flori à Emmanuel GARETTE
#9 Mis à jour par Scrum Master il y a plus de 6 ans
- Statut changé de En cours à Résolu
#10 Mis à jour par Joël Cuissinat il y a plus de 6 ans
- % réalisé changé de 0 à 100
- Temps estimé mis à 3.00 h
- Restant à faire (heures) mis à 0.25
#11 Mis à jour par Gérald Schwartzmann il y a plus de 6 ans
- Statut changé de Résolu à En cours
Le certificat ne semble pas reconnu comme valide, l'EAD n'affiche pas de mire d'authentification.
update-ca-certificates permet de contourner le prb et ajoute 3 certificats
#12 Mis à jour par Gérald Schwartzmann il y a plus de 6 ans
- Copié vers Tâche #22339: letsencrypt, ead-server non accessible ajouté
#13 Mis à jour par Gérald Schwartzmann il y a plus de 6 ans
- Statut changé de En cours à Ne sera pas résolu
#14 Mis à jour par Gérald Schwartzmann il y a plus de 6 ans
- Statut changé de Ne sera pas résolu à Reporté