Projet

Général

Profil

Gestion certificats » Historique » Version 7

Benjamin Bohard, 30/10/2019 09:06

1 1 Benjamin Bohard
h1. Gestion certificats
2 1 Benjamin Bohard
3 1 Benjamin Bohard
Ce mémo fait le point sur la problèmatique des certificats sur les modules EOLE.
4 1 Benjamin Bohard
5 1 Benjamin Bohard
h2. Usage des certificats sur les modules EOLE
6 1 Benjamin Bohard
7 1 Benjamin Bohard
Sur les modules EOLE, les certificats sont utilisés pour identifier et authentifier différents services :
8 1 Benjamin Bohard
* ead ;
9 1 Benjamin Bohard
* eole-sso ;
10 1 Benjamin Bohard
* sites et applications web desservies par apache ;
11 1 Benjamin Bohard
* transmission des journaux d'application.
12 1 Benjamin Bohard
13 1 Benjamin Bohard
h2. Deux modes de fonctionnement
14 1 Benjamin Bohard
15 1 Benjamin Bohard
Deux modes d'utilisation des certificats sont proposés par les modules EOLE.
16 1 Benjamin Bohard
Un mode intégré à une pki reconnue (dont les certificats racines sont intégrés aux navigateurs) et un mode indépendant reposant sur un certificat racine local ou non reconnu.
17 1 Benjamin Bohard
18 1 Benjamin Bohard
Les modes peuvent être utilisés concomitamment. Par exemple, on peut avoir un certificat intégré à une pki pour les sites desservis par apache et un certificat signé "localement" pour la transmission des journaux d'application.
19 1 Benjamin Bohard
20 1 Benjamin Bohard
h3. Mode indépendant
21 1 Benjamin Bohard
22 1 Benjamin Bohard
C'est le mode par défaut, mis en place à l'instanciation du serveur.
23 4 Benjamin Bohard
Ce mode permet de fonctionner en attendant la signature de la clé publique du module par une pki, -celle de Toulouse dans le cas des établissements scolaires du second degré par exemple-.
24 1 Benjamin Bohard
25 1 Benjamin Bohard
Les certificats applicatifs permettent les mêmes usages qu'en mode intégré.
26 1 Benjamin Bohard
Par contre, en l'absence d'une pki, il n'y a pas de gestion des listes de révocations.
27 1 Benjamin Bohard
Les certificats applicatifs et certificats racines doivent être acceptés manuellement.
28 1 Benjamin Bohard
29 1 Benjamin Bohard
h3. Mode intégré
30 1 Benjamin Bohard
31 2 Benjamin Bohard
C'est le mode conseillé pour les applications web en particulier, les applications faisant intervenir des logiciels clients en dehors des serveurs EOLE en général.
32 2 Benjamin Bohard
33 5 Benjamin Bohard
Actuellement, pour l'Éducation nationale, l'autorité de référence est TERENA.
34 1 Benjamin Bohard
35 5 Benjamin Bohard
La chaîne de certification a deux niveaux matérialisés par deux fichiers : *DigiCertCA.crt* et *TrustedRoot.crt*.
36 5 Benjamin Bohard
37 2 Benjamin Bohard
h4. Configurations des applications
38 2 Benjamin Bohard
39 1 Benjamin Bohard
La configuration des applications se résume souvent à présenter la chaîne de certification à l'application dans un ou plusieurs fichiers.
40 2 Benjamin Bohard
41 5 Benjamin Bohard
La première étape consiste donc à récupérer, en plus du certificat du serveur, les certificats *DigiCertCA.crt* et *TrustedRoot.crt* et à les placer dans le répertoire /etc/ssl/certs du serveur.
42 1 Benjamin Bohard
43 5 Benjamin Bohard
Ensuite, la concaténation des certificats est la seule opération à connaître et peut être opérée, à la main, grâce à la commande openssl.
44 5 Benjamin Bohard
45 2 Benjamin Bohard
Soit une chaîne de certification définie par un certificat serveur.crt établi à l'aide d'un certificat cert_intermediaire.crt, lui-même établi à l'aide du certificat autosigné appartenant à une autorité reconnue cert_racine.crt. La concaténation de la chaîne complète prendrait la forme suivante :
46 2 Benjamin Bohard
47 2 Benjamin Bohard
<pre>
48 2 Benjamin Bohard
openssl x509 -in serveur.crt > chaine.crt
49 2 Benjamin Bohard
openssl x509 -in cert_intermediaire.crt >> chaine.crt
50 2 Benjamin Bohard
openssl x509 -in cert_racine.crt >> chaine.crt
51 2 Benjamin Bohard
</pre>
52 2 Benjamin Bohard
53 2 Benjamin Bohard
L'ordre de concaténation est important.
54 1 Benjamin Bohard
55 2 Benjamin Bohard
h5. Apache
56 2 Benjamin Bohard
57 5 Benjamin Bohard
Apache dispose de deux variables dans sa configuration : 
58 3 Benjamin Bohard
* une pour le certificat du serveur, le certificat délivré par TERENA non concaténé (variable apache_cert) ;
59 3 Benjamin Bohard
* une pour le reste de la chaîne (pas de variable au niveau creole car cette chaîne est calculée automatiquement pour peu que le fichier indiqué pour la variable précédente ne contienne pas la chaîne).
60 1 Benjamin Bohard
61 1 Benjamin Bohard
Le reste de la chaîne ne devrait pas inclure le certificat racine autosigné, normalement dans le magasin du navigateur web.
62 1 Benjamin Bohard
63 5 Benjamin Bohard
h6. Procédure
64 5 Benjamin Bohard
65 5 Benjamin Bohard
# copier tous les certificats récupérés dans /etc/ssl/certs,
66 5 Benjamin Bohard
# renseigner la variable creole apache_cert avec le chemin du certificat du serveur délivré par TERENA,
67 5 Benjamin Bohard
# la chaîne des certificats intermédiaires est construite au reconfigure en concaténant les certificats présents dans /etc/ssl/certs/ constituant cette chaîne (utilisation des champs issuer et subject pour reconstituer la chaîne).
68 5 Benjamin Bohard
69 2 Benjamin Bohard
h5. Nginx
70 2 Benjamin Bohard
71 1 Benjamin Bohard
Nginx dispose d'une variable :
72 1 Benjamin Bohard
* certificat du serveur concaténé avec le reste de la chaîne.
73 1 Benjamin Bohard
74 5 Benjamin Bohard
h6. Procédure
75 5 Benjamin Bohard
76 5 Benjamin Bohard
L'automatisation n'est pas encore intégrée dans les modules EOLE
77 5 Benjamin Bohard
78 5 Benjamin Bohard
# copier tous les certificats récupérés dans /etc/ssl/certs,
79 5 Benjamin Bohard
# concaténer toute la chaîne dans un nouveau fichier,
80 5 Benjamin Bohard
# renseigner la variable eole_crt avec le chemin du fichier concaténé
81 5 Benjamin Bohard
82 2 Benjamin Bohard
h5. Eole-sso
83 2 Benjamin Bohard
84 1 Benjamin Bohard
Eole-sso dispose de 2 variables :
85 1 Benjamin Bohard
* certificat du serveur concaténé avec les certificats intermédiaires (variable eolesso_cert /etc/ssl/certs/eole.crt par défaut);
86 7 Benjamin Bohard
* l’emplacement du certificat racine autosigné (variable eolesso_ca_location).
87 5 Benjamin Bohard
88 5 Benjamin Bohard
h6. Procédure
89 5 Benjamin Bohard
90 5 Benjamin Bohard
# copier tous les certificats récupérés dans /etc/ssl/certs,
91 5 Benjamin Bohard
# concaténer le certificat avec les certificats intermédiaires dans un nouveau fichier,
92 5 Benjamin Bohard
# indiquer le chemin de ce fichier dans la variable eolesso_cert,
93 6 Benjamin Bohard
# indiquer le chemin du dossier contenant le certificat racine dans la variable eolesso_ca_location (le plus souvent /etc/ssl/certs).
94 2 Benjamin Bohard
95 1 Benjamin Bohard
h2. Extensions des certificats
96 1 Benjamin Bohard
97 1 Benjamin Bohard
h3. Certificat racine
98 1 Benjamin Bohard
99 1 Benjamin Bohard
h3. Certificats applicatifs