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
webroo
t.
Écran
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
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
etTLS-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 :
CA-ROOT
CA-SUB1
signée parCA-ROOT
CA-SUB2
signée parCA-SUB1
mon-serveur
signé parCA-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 :
récupérer la requête du certificat située dans le répertoire
/etc/ssl/req/
:eole.p10
;se connecter sur l'interface web de demande des certificats et suivre la procédure ;
récupérer le certificat depuis l'interface (copier/coller dans un fichier) ;
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
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=)
Truc & astuce
La commande suivante permet d'afficher les DN de l'émetteur et du sujet du certificat généré :
root@dc1:~# openssl x509 -in /etc/ssl/certs/eole.crt -noout -issuer -subject
issuer=C = FR, O = Ministere Education Nationale (MENESR), OU = 110 043 015, OU = ac-test, CN = CA-dc1.domseth.ac-test.fr
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
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/.