Projet

Général

Profil

Tâche #20513

Scénario #21863: Corrections let's encrypt

letsencrypt, ead-server non accessible

Ajouté par Vincent Febvre il y a presque 7 ans. Mis à jour il y a plus de 6 ans.

Statut:
Reporté
Priorité:
Normal
Assigné à:
Début:
15/05/2017
Echéance:
% réalisé:

100%

Temps estimé:
3.00 h
Temps passé:
Restant à faire (heures):
0.25

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.

libsecure.patch Voir (1,28 ko) Laurent Flori, 22/05/2017 12:44

eadserver.patch Voir (1,47 ko) Laurent Flori, 22/05/2017 12:44


Demandes liées

Copié vers eole-common - Tâche #22339: letsencrypt, ead-server non accessible Fermé 15/05/2017

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

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é

Formats disponibles : Atom PDF