Onglet Certificats ssl : gestion des certificats SSL

La gestion des certificats a été standardisée afin de faciliter leur mise en œuvre.

Le choix du type de certificat à mettre en place sur le serveur s'effectue dans l'onglet Général.

Certificat de type Let's Encrypt

L'autorité de certification Let's Encrypt[1] permet de mettre en place, gratuitement, des certificats dont la distribution et le renouvellement sont automatisés.

Vous pouvez à présent gérer des certificats Let's Encrypt pour des serveurs accessibles depuis Internet ou au travers d'un proxy inverse.

Serveurs accessibles depuis Internet ou au travers d'un proxy inverse

L'utilisation de certificats Let's Encrypt requiert l'utilisation de noms DNS connus d'Internet.

Le certificat sera fait au nom résultant de la concaténation du nom de la machine et du nom de DNS local.

Seule la variable Mode de fonctionnement du client Let's Encrypt nécessite un paramétrage en fonction de l'accessibilité du serveur :

  • accessible depuis Internet → utiliser la valeur standalone ;

  • accessible au travers d'un proxy inverse → utiliser la valeur webroot.

Nom DNS supplémentaires

Il est possible de faire des requêtes supplémentaires pour d'autres noms DNS connus d'Internet en renseignant la variable Nom de domaines supplémentaires.

Remarque

Il y aura autant de certificats supplémentaires que de noms DNS déclarés dans la variable Nom de domaines supplémentaires.

Certificat de type autosigné et manuel

Certificats par défaut

Un certain nombre de certificats sont mis en place lors de la mise en œuvre d'un module EOLE :

  • /etc/ssl/certs/ca_local.crt : autorité de certification propre au serveur (certificats auto-signés) ;
  • /etc/ssl/private/ca.key : clef privée de la CA ci-dessus ;
  • /etc/ssl/certs/ACInfraEducation.pem : contient les certificats de la chaîne de certification de l'Éducation nationale (igca/education/infrastructure) ;
  • /etc/ssl/req/eole.p10 : requête de certificat au format pkcs10, ce fichier contient l'ensemble des informations nécessaires à la génération d'un certificat ;
  • /etc/ssl/certs/eole.crt : certificat serveur généré par la CA locale, il est utilisé par les applications (apache, ead2, eole-sso, ...) ;
  • /etc/ssl/certs/eole.key : clé du certificat serveur ci-dessus.

Après génération de la CA locale, un fichier /etc/ssl/certs/ca.crt est créé qui regroupe les certificats suivants :

  • ca_local.crt ;
  • ACInfraEducation.pem ;
  • tout certificat présent dans le répertoire /etc/ssl/local_ca.

Mise en place d'un certificat particulier

Pour que les services d'un module EOLE utilisent un certificat particulier (par exemple, certificat signé par une autorité tierce), il faut modifier trois variables dans l'onglet Certificats ssl de l'interface de configuration du module.

Dans le cas d'un certificat signé par une autorité externe, copier le certificat de la CA en question dans /etc/ssl/local_ca/ pour qu'il soit pris en compte automatiquement (non nécessaire pour les certificats de l'IGC nationale).

Le répertoire /etc/ssl/certs/ accueille le fichier de certificat issu de la CA interne ainsi que la clé privée correspondant au certificat.

Il faut déclarer les bons chemins dans l'interface de configuration du module.

Pour appliquer les modifications, utilisez la commande reconfigure.

Si les certificats configurés ne sont pas trouvés, ils sont générés à partir de la CA locale.

Remarque

Sur un module dont la version est supérieure ou égale à 2.6.2, la configuration des chemins est proposée dans l'onglet Général.

Attention

Le répertoire /etc/ssl/local_ca/ accueille uniquement des certificats CA.

Paramètres SSL

Les variables de la section Paramètres SSL permettent de personnaliser la configuration OpenSSL[2] à utiliser pour générer les certificats auto-signés.

Taille de la clé

Cette variable permet de définir le paramètre default_bits de la section [req] du fichier de configuration d'OpenSSL.

Par défaut la taille de la clé est de 2048 bits.

Durée de validité du certificat

Cette variable permet de définir le paramètre default_days des sections [ CA_default ] et [req] du fichier de configuration d'OpenSSL.

Par défaut la CA et les certificats générés expirent au bout de 3 ans (1096 jours).

Sujet du certificat

Les variables de la section Subject (DN) permettent de configurer le nom complet du serveur (distinguished name[3]) à utiliser pour générer les certificats auto-signés.

Nom du pays (C=)

Cette variable permet de définir le paramètre countryName de la section [req_distinguished_name] du fichier de configuration d'OpenSSL.

Il s'agit du code du nom de pays sur deux lettres, par défaut FR pour la France.

Nom de l'organisation (O=)

Cette variable permet de définir le paramètre organizationName de la section [req_distinguished_name] du fichier de configuration d'OpenSSL.

Il s'agit du nom de la structure, par défaut Ministere Education Nationale (MENESR) dans le cadre de l'Éducation Nationale.

Nom de l'unité de l'organisation (OU=)

Cette variable est utilisée pour ajouter des unités organisationnelles[4] dans le paramètre organizationalUnitName de la section [req_distinguished_name] du fichier de configuration d'OpenSSL.

La valeur par défaut 110 043 015 représente le numéro SIREN du Ministère de l'Éducation Nationale.

Nom DNS du serveur (CN=)

Cette variable permet de définir le paramètre commonName de la section [req_distinguished_name] du fichier de configuration d'OpenSSL.

Le CN[5] du serveur est pré-renseigné à l'aide des informations fournies dans l'onglet Général.

Truc & astuce

La commande suivante permet d'afficher les DN de l'émetteur et du sujet du certificat généré :

1
root@dc1:~# openssl x509 -in /etc/ssl/certs/eole.crt -noout -issuer -subject
2
issuer=C = FR, O = Ministere Education Nationale (MENESR), OU = 110 043 015, OU = ac-test, CN = CA-dc1.domseth.ac-test.fr
3
subject=C = FR, O = Ministere Education Nationale (MENESR), OU = 110 043 015, OU = ac-test, CN = dc1.domseth.ac-test.fr

Nom DNS alternatif

La section Nom Alternatif de la machine permet de renseigner tous les noms DNS associés au serveur.

Nom DNS alternatif du serveur

Cette variable permet d'ajouter tous les noms DNS nécessaires dans la section [ ALIASES ] du fichier de configuration d'OpenSSL.

Elle doit notamment contenir les noms de domaine utilisés pour accéder aux applications web (l'EAD[6] par exemple).

Attention

Pour que les modifications soient prises en compte, il faut reconfigurer le serveur puis re-générer les certificats.

Création de nouveaux certificats

Le script /usr/share/creole/gen_certif.py permet de générer rapidement un nouveau certificat SSL.

ExempleGénération d'un certificat avec gen_certif.py

root@eole:~# /usr/share/creole/gen_certif.py -fc /etc/ssl/certs/test.crt

Generation du certificat machine

* Certificat /etc/ssl/certs/test.crt généré

Re-génération des certificats

Si les certificats auto-signés sont expirés ou si ils ne sont plus adaptés à la configuration du serveur, il est possible de les re-générer à l'aide de la commande suivante :

/usr/share/creole/gen_certif.py -f

Création de nouveaux certificats

Le script /usr/share/creole/gen_certif.py permet de générer rapidement un nouveau certificat SSL.

ExempleGénération d'un certificat avec gen_certif.py

root@eole:~# /usr/share/creole/gen_certif.py -fc /etc/ssl/certs/test.crt

Generation du certificat machine

* Certificat /etc/ssl/certs/test.crt généré

Re-génération des certificats

Si les certificats auto-signés sont expirés ou si ils ne sont plus adaptés à la configuration du serveur, il est possible de les re-générer à l'aide de la commande suivante :

/usr/share/creole/gen_certif.py -f

Obtention d'un certificat signé par l'IGC de l’Éducation nationale

Étapes à suivre :

  1. récupérer la requête du certificat située dans le répertoire /etc/ssl/req/ : eole.p10 ;

  2. se connecter sur l'interface web de demande des certificats et suivre la procédure ;

  3. récupérer le certificat depuis l'interface (copier/coller dans un fichier) ;

  4. copier le fichier dans le répertoire /etc/ssl/certs/.

Attention

Seuls les ISR/OSR des académies sont accrédités pour effectuer les demandes.

Certificats intermédiaires

En attendant que la prise en compte des certificats intermédiaires soit automatisée pour l'ensemble des services de base (fixme #13362), les manipulations nécessaires pour éviter des avertissements dans les navigateurs sont documentées dans la page wiki suivante : https://dev-eole.ac-dijon.fr/projects/modules-eole/wiki/Gestion_certificats