Onglet Certificats ssl : gestion des certificats SSL

Afin de faciliter la mise en œuvre des certificats, leur gestion a été standardisée.

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[1] Let's Encrypt[2] 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.

Nom DNS supplémentaires

Il est possible de faire des requêtes supplémentaires pour d'autres noms DNS connus d'Internet que celui du serveur 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.

Paramètres du client Let's Encrypt

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

Le certificat sera créé avec le nom DNS résultant de la concaténation du nom de la machine et du nom de DNS du réseau local saisis dans l'onglet Général.

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.

Écran

  • 1
    le_config_dir

    Chemin du répertoire du client Let's Encrypt

  • 2
    le_log_dir

    Chemin du répertoire de travail du client Let's Encrypt

  • 3
    le_logs_dir

    Chemin du répertoire de journalisation du client Let's Encrypt

  • 4
    le_server_addr

    Adresse du serveur Let's Encrypt

  • 5
    le_server_port

    Port d'écoute du serveur Let's Encrypt

  • 6
    le_client_mode

    Mode de fonctionnement du client Let's Encrypt

  • 7
    le_http_01_port

    Port d'écoute pour http-01

  • 8
    le_tls_sni_port

    Port d'écoute pour TLS

  • 9
    le_expire_delay

    Nombre de jours avant le déclenchement du renouvellement des certificats

Détail

  • Les trois premiers points concernent l'emplacement des fichiers/données gérés par le client Let's Encrypt qui peuvent êtres modifiés.
  • Les point 4 et 5 sont utiles dans le cas où vous souhaitez spécifier un serveur Let's Encrypt spécifique.
  • Les points 7 et 8 permettent de modifier les ports associés aux défis http-01 et TLS-SNI.
  • Le point 9 permet de déclencher le renouvellement des certificats avant la fin de validité des certificats Let's Encrypt déjà acquis.

Mode Let's Encrypt

Le point 6 permet de spécifier le mode de fonctionnement de Let's Encrypt, soit :

  • webroot

  • standalone

Le choix du mode de vérification n’est pas anodin, et peut engendrer des effets de bord.

webroot : Obtenir un certificat en écrivant dans la racine d'un serveur web fonctionnel.

standalone : Obtenir un certificat en lançant un serveur web autonome (le port 80 doit être disponible)

Conseil

Pour plus d'information consulter la documentation Let's Encrypt

Certificat de type manuel

Le type manuel vous permet d'utiliser le certificat de votre choix (en général, un certificat signé par une autorité tierce).

Pour que les services d'un module EOLE l'utilisent, il faut placer vos fichiers aux endroits définis au préalable dans la section Choix du certificat SSL de l'onglet Général.

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

Pour appliquer les modifications, utiliser la commande reconfigure.

Attention

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

Attention

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

Emplacement et contenu des fichiers

Chemin du fichier contenant le certificat SSL

Le certificat SSL est contenu dans un fichier au format PEM.

Ce fichier débute par la chaîne :

-----BEGIN CERTIFICATE-----

et se termine par :

-----END CERTIFICATE-----

Le chemin doit pointer vers le fichier contenant le certificat ainsi que les éventuels certificats intermédiaires.

Si la chaîne de certification du serveur contient une ou plusieurs autorités intermédiaires, vous devez concaténer le certificat du serveur avec les certificats des autorités intermédiaires en respectant l'ordre depuis la chaîne de certification vers l'autorité racine.

ExempleConstruction du fichier avec plusieurs autorités intermédiaires

Soit la chaîne de certification suivante :

  1. CA-ROOT

  2. CA-SUB1 signée par CA-ROOT

  3. CA-SUB2 signée par CA-SUB1

  4. mon-serveur signé par CA-SUB1

Si le chemin du fichier contenant le certificat SSL est /etc/ssl/cert/mon-serveur.crt, les différents certificats devront être concaténés dans l'ordre suivant :

cat mon-serveur.crt ca-sub2.crt ca-sub1.crt > /etc/ssl/cert/mon-serveur.crt

Chemin du fichier contenant la clé privée du certificat SSL

</etc/ssl/private/ca.key>

La clé privée débute par la chaîne :

-----BEGIN RSA PRIVATE KEY-----

et se termine par :

-----END RSA PRIVATE KEY----

Chemin du fichier contenant la chaîne de certification

Ce fichier est la concaténation du fichier du certificat (sans les intermédiaires) et de la clé privée.

Cette dernière est au format PEM et est généralement fournie dans un fichier avec l'extension .pem.

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.

Attention

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

Certificat de type autosigné

En mode autosigné le certificat est généré localement et signé par une autorité de certification[1] locale.

Paramètres SSL

Les variables de la section Paramètres SSL permettent de personnaliser la configuration OpenSSL[3] à 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[4]) à 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[5] 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[6] 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[7] 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

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 signé par la CA locale, il est utilisé par les applications (apache, ead2, eole-sso, ...) ;
  • /etc/ssl/private/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.

Truc & astuce

Les certificats émis par l'IGC/A[8] suivants sont déployés par défaut sur les modules EOLE :

  • menesr/igca.crt pour le Ministère de l'Éducation nationale ;
  • medde/antsv3racine.crt pour le Ministère de l'Ecologie, de l'Energie, du Développement durable et de la Mer.

Pour plus d'informations sur ces certificats, consulter le site de l'ANSSI[9] : https://www.ssi.gouv.fr/administration/services-securises/igca/certificats-emis-par-ligca-rsa-2048/.

Attention

À partir d'EOLE 2.7.1, la chaîne de certificats dépréciée ACInfraEducation.crt n'est plus fournie.