Intégration d'un certificat et d'une chaîne d'authentification
L'exemple ci-dessous concerne la mise en œuvre d'un certificat et de sa chaîne d'authentification sur un serveur Zéphir. La procédure est en tout point identique sur un autre module pour la partie génération des fichiers. Elle diffère dans la mise en œuvre en fonction du service utilisation le certificat.
Génération du .pem
L'IGC de type ANTS nous fournit le certificat du serveur et sa clé privée dans un fichier p12 protégé par mot de passe.
À partir du fichier p12, il faut générer un certificat au format .pem ainsi qu'un fichier de clé :
thierry@hoth:~/certifs$ openssl pkcs12 -in certificate-56577-zephir01.p12 -out package.pem -nodes
Enter Import Password:
MAC verified OK
thierry@hoth:~/certifs$ ls
certificate-56577-zephir01.p12 package.pem
On obtient une concaténation en sortie, soit un fichier package.pem
Ce fichier contient à la fois les données de la clé et celles du certificat.
Pour être intégré au serveur Zéphir, il faut que la clé soit distincte du certificat (on duplique donc le fichier).
thierry@hoth:~/certifs$ cp package.pem zephir-01.pem
thierry@hoth:~/certifs$ cp package.pem zephir-01.key
Il faut alors éditer ces deux fichiers de façon à ne garder pour :
- le certificat, que le bloc BEGIN CERTIFICATE
- la clé, que le bloc BEGIN PRIVATE KEY
Il est possible de vérifier le contenu du fichier .pem avec la commande suivante :
thierry@hoth:~/certifs$ openssl x509 -noout -text -in zephir-01.pem
Cette commande permet notamment de vérifier que les alias d'enregistrement DNS sont corrects
X509v3 Subject Alternative Name:DNS:zephir-01.eole.e2.rie.gouv.fr, DNS:zephir-vnf-ac.eole.e2.rie.gouv.fr, DNS:zephir-ac.eole.e2.rie.gouv.fr, DNS:zephir-cerema.eole.e2.rie.gouv.fr
Vérification de la chaîne de certification
Pour vérifier que le certificat et la clé privée associée sont cohérents, il faut vérifier que les modulus de sortie sont identiques.
ExemplePour la clé
thierry@hoth:~/certifs/zephir-01$ openssl rsa -noout -modulus -in zephir-01.key
Modulus=C0E1FB7D415B4E6B8A6E0E51033B2FA3603BB4AD1C0D0A2C3D954865FCE26AD71A140A
71E0608E75351DF54EE0490998972E7FE39E556910B8814FFC627C5E312CA0A1EB1AB5695107D6
2F4067257CE6D305C49E49FE96CCAD7EB4E5CA6CA399B0D40F7827649F16D96C36C2C8600B5831
794B7CB3C1EA5374E7B40A429E8440DEA484654859C9DB53DBF650EDF496BC61CE34B937067B8E
991A47DC80B7E186BD9FEA2846C3BC0D6EE13CA73C70B6193A20624F35CBBB864FFABA474774F3
964DD87A2E9E00A3EBBB44FA2C89B4C6879442814DAA30B198AF57F23ACAD3D86D466086D0BA26
E9BE998D09D01F31C388C781DC30DF6BA8CEAA49D219D9D46FE1
L'extraction s'est ici bien passée.
ExemplePour le certificat
thierry@hoth:~/certifs/zephir-01$ openssl x509 -noout -modulus -in zephir-01.pem
Modulus=C0E1FB7D415B4E6B8A6E0E51033B2FA3603BB4AD1C0D0A2C3D954865FCE26AD71A140A
71E0608E75351DF54EE0490998972E7FE39E556910B8814FFC627C5E312CA0A1EB1AB5695107D6
2F4067257CE6D305C49E49FE96CCAD7EB4E5CA6CA399B0D40F7827649F16D96C36C2C8600B5831
794B7CB3C1EA5374E7B40A429E8440DEA484654859C9DB53DBF650EDF496BC61CE34B937067B8E
991A47DC80B7E186BD9FEA2846C3BC0D6EE13CA73C70B6193A20624F35CBBB864FFABA474774F3
964DD87A2E9E00A3EBBB44FA2C89B4C6879442814DAA30B198AF57F23ACAD3D86D466086D0BA26
E9BE998D09D01F31C388C781DC30DF6BA8CEAA49D219D9D46FE1
L'extraction s'est ici bien passée.
Il reste à vérifier que la chaîne complète est cohérente. On utilise alors le certificat racine qui valide la chaîne applicative qui valide elle-même le serveur.
thierry@hoth:~/certifs/zephir-01$ openssl verify -verbose -CAfile <(cat chaineACs-ANTSv3-SA-1.pem AC-ANTSv3-Racine-1.pem )
zephir-01.pemzephir-01.pem: OK
Dépôt du certificat et de la chaîne de certification sur le module
Le certificat généré ainsi que la clé doivent être copiés sur la machine cible sous /etc/ssl/certs
. Cependant, le serveur Zéphir veut la présence de la chaîne intermédiaire dans un fichier .crt.
thierry@hoth:~/certifs$ cat zephir-01.pem chaineACs-ANTSv3-SA-1.pem > zephir.crt
De plus, la clé privée et la chaîne doivent être concaténées dans le fichier pem.
thierry@hoth:~/certifs$ cat chaineACs-ANTSv3-SA-1.pem zephir-01.key > zephir.pem
On déploie le tout sur le serveur Zéphir de destination :
thierry@hoth:~/certifs$ scp zephir.crt root@zephirDestination:/etc/ssl/certs/zephir.crt
thierry@hoth:~/certifs$ scp zephir-01.key root@zephirDestination:/etc/ssl/certs/zephir.key
thierry@hoth:~/certifs$ scp zephir.pem root@zephirDestination:/etc/ssl/certs/zephir.pem
Il faut aussi fournir les certificats CA de la chaîne de certification (cf .zip attaché) sous /etc/ssl/local_ca
.
thierry@hoth:~/certifs$ scp AC-ANTSv3-Racine-1.pem root@zephirDestination:/etc/ssl/local_ca/
thierry@hoth:~/certifs$ scp chaineACs-ANTSv3-SA-1.pem root@zephirDestination:/etc/ssl/local_ca/
Configuration sur le module Zéphir
Dans l'onglet Certificats SSL de l'interface de configuration du module il faut remplir les champs suivants :
#fixme capture d'écran
Nom long du certificat SSL par défaut (server_cert) => fichier déposé sous /etc/ssl/certs soit zephir.crt ici (indiquer le chemin complet)
Nom long de la clé privée du certificat SSL par défaut (server_key) => fichier déposé sous /etc/ssl/certs soit zephir.key ici (indiquer le chemin complet)
Nom long du certificat Privacy Enhanced Mail (server_pem) => fichier déposé sous /etc/ssl/certs soit zephir.pem ici (indiquer le chemin complet)
Nom DNS du serveur (de la forme nom-serveur.ac-acad.fr) (CN=) (ssl_server_name) => nom FQDN du serveur soit zephir-01.eole.e2.rie.gouv.fr (indiquer le chemin complet)
Nom DNS/IP alternatif du serveur ssl_subjectaltname : tous les noms DNS renseignés dans le certificat serveur.
Installation de l'autorité racine sur le module
Dans le cas où l'autorité racine n'est pas reconnue par défaut sur le serveur il faut la recopier sur le module.Ce qui est le cas pour la chaîne de certification ANTS.
thierry@hoth:~/certifs$ scp AC-ANTSv3-Racine-1.pem root@zephirDestination:/usr/local/share/ca-certificates/medde/AC-ANTSv3-Racine-1.crt
Attention
L'extension crt est obligatoire
Puis, depuis le module, rafraîchir la liste des certificats
root@eolebase:/usr/local/share/ca-certificates# update-ca-certificates
Updating certificates in /etc/ssl/certs...
WARNING: Skipping duplicate certificate ACInfraEducation.pem
WARNING: Skipping duplicate certificate ACInfraEducation.pem
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
L'enregistrement du module auprès du serveur Zéphir est désormais possible à l'aide du script enregistrement_zephir
.