Ceci est une ancienne révision du document !
EJBCA - Création d'une autorité racine et intermédiaire
Création — Nicolas THOREZ 2024/03/20 12:51
Dans cette procédure, nous allons mettre en place une autorité de certification racine et une autorité intermédiaire pour valider différents certificats utilisateurs et/ou serveurs sur notre infrastructure.
Réf. : EJBCA (RootCA en RSA) Réf. : EJBCA (RootCA et SubCA en ECDSA)
Création des profils
Profil pour une autorité racine
- On se connecte sur l'interface d'administration de
EJBCAet on va dansCertificate Profiles:

- On clone le profil par défaut
ROOTCA:

- On nomme notre profil et on valide en cliquant sur
Create from template:

- On édite le profil nouvellement créé :

- On commence par choisir :
- Available Key Algorithms :
ECDSA - Available ECDSA curves :
P-256 / prime256v1 / secp256r1 - Validity or end date of the certificate :
10y

- Dans la section
X.509v3 extensions, on décoche :- Authority Key ID

- Dans la section
X.509v3 extensions : Names, on décoche :- Subject Alternative Name
- Issuer Alternative Name

- Dans la section
Other Data:- on décoche LDAP DN order
- on sauvegarde les modifications en cliquant sur
Save
Profil pour une autorité intermédiaire
- De retour sur la liste des profils, on clone désormais le profil par défaut
SUBCA:

- On nomme le nouveau profil et on clique sur
Create from template:

- On édite le profil nouvellement créé :

- On commence par choisir :
- Available Key Algorithms :
ECDSA - Available ECDSA curves :
P-256 / prime256v1 / secp256r1 - Signature Algorithm :
Inherit from Issuing CA - Validity or end date of the certificate :
5y

- Dans la section
X.509v3 extensions, à la lignePath Length Constraint:- on coche
Add… - on entre la valeur
0dans la zoneValue

- Dans la section
X.509v3 extensions - Validation data, on coche :- CRL Distribution Points
- Use CA defined CRL Distribution Point
- Authority Information Access
- Use CA defined OCSP locator
- Use CA defined CA issuer

- Dans la section
Other Data:- on décoche LDAP DN order
- on sauvegarde en cliquant sur
Save
Créations des clés
Maintenant que les profils sont prêts, il nous faut créer les clés privées nécessaires aux différentes autorités. La procédure suivante est donc à réaliser deux fois, une pour l'autorité racine et une pour l'autorité intermédiaire.
- Sur l'interface d'administration, on va dans le menu
Crypto Tokenset on clique surCreate new…:

- Dans la page qui s'affiche :
- on nomme le jeu de clés
- on entre un mot de passe d'enregistrement. Ce mot de passe est à conserver, il sera utile pour réactiver les clés en cas de redémarrage de l'instance.
- on confirme le mot de passe
- on sauvegarde avec le bouton
Save

- Dans la section qui apparaît en dessous, on va créer 3 clés (une pour le chiffrement, une pour la signature et une pour tester l'intégrité de l'autorité). Pour cela, on choisit un nom pour chacune, un protocole de chiffrement selon le tableau suivant et on clique sur
Generate new key pair:
^Clé ^Protocole ^
| SignKey | ECDSA P-256 / prime256v1 / secp256r1 |
| EncryptKey | RSA 4096 |
| TestKey | ECDSA P-256 / prime256v1 / secp256r1 |
* Ce qui nous donne :
Création des autorités
Si les deux profils d'autorités et les deux jeux de clés sont prêt, on peut passer à la création des autorités de certifications.
Autorité racine
- On va dans
Certification Authorities, on donne un nom pour notre autorité racine dans la sectionAdd CAet on clique surCreate…:

- On commence par définir :
- Crypto Token : On choisit le jeux de clés créé pour l'autorité racine.
- Signing Algorithm : On choisit
SHA512withECSDSA. - defaultKey : On choisit la clé créée pour le chiffrement.
- certSignKey : On choisit la clé créée pour la signature.
- testKey : On choisit la clé créée pour les tests d'intégrité.
- Description : Optionnel, cette description permet de mieux identifier l'autorité.

- Dans la section
CA Certificate Data, on définit :- Subject DN : On entrera dans une seule chaîne de caractère, 3 champs séparés par des virgules. On aura un champs
CN=qui indique le nom de l'autorité, un champsO=qui indique le nom de l'organisation ou entreprise de l'autorité et un champsC=pour indiqué le pays de l'autorité. - Signed By : On sélectionne
Self Signed. - Certificate Profile : On choisit le profil créé pour l'autorité racine.
- Validity : On entre
10y. - LDAP DN order : on décoche la case
Use.

- Dans la section
CRL Specific Data, on définit :- CRL Expire Period : On choisira
3mo. - CRL Overlap Time : On choisira
0m.

- On va en bas de la page et on clique sur
Create:
Autorité intermédiaire
- On commence par créer une nouvelle autorité comme pour l'autorité racine, puis on définit :
- Crypto Token : On choisit le jeux de clés créé pour l'autorité intermédiaire.
- Signing Algorithm : SHA512withECSDSA
- defaultKey : On choisit la clé créée pour le chiffrement.
- certSignKey : On choisit la clé créée pour la signature.
- testKey : On choisit la clé créée pour les tests d'intégrité.
- Description : Optionnel, cette description permet de mieux identifier l'autorité.

- Dans la section
CA Certificate Data, on définit :- Subject DN : On entrera dans une seule chaîne de caractère, 3 champs séparés par des virgules. On aura un champs
CN=qui indique le nom de l'autorité, un champsO=qui indique le nom de l'organisation ou entreprise de l'autorité et un champsC=pour indiqué le pays de l'autorité. - Signed By : On sélectionne l'autorité racine créée précédemment.
- Certificate Profile : On choisit le profil créé pour l'autorité intermédiaire.
- Validity : On entre
5y(la moitié de l'autorité racine). - LDAP DN order : on décoche la case
Use.

- Dans la section
CRL Specific Data, on définit :- CRL Expire Period : On choisira
3mo. - CRL Issue Interval : On choisira
1d. - CRL Overlap Time : On choisira
0m.

- Enfin, comme pour l'autorité racine, on va au bas de la page et on valide en cliquant sur
Create.
Déploiement des certificats racine et intermédiaire sur les postes clients
Quels que soient les clients sur lesquels installer les certificats des autorités de certifications, il nous faut d'abord récupérer ces derniers. Pour cela, on peut les télécharger depuis la page de gestion (RA Web) dans le menu CA Certificates and CRLs en utilisant le bouton Download Certificate Bundle :
Windows par GPO
- On place les certificats racine et intermédiaire dans le dossier
SYSVOLdu contrôleur de domaine. - On crée un
GPOque l'on édite :- Dans
Configuration ordinateur,Stratégies,Paramètres Windows,Paramètres de sécurité,Stratégie de clé publique:- Autorités de certification racines de confiance : on importe le certificat racine.
- Autorités de certification intermédiaires : on importe le certificat intermédiaire.
Linux via puppet
- Sur notre serveur
puppet, on place les certificats racine et intermédiaire au formatPEMdans le dossier/etc/puppetlabs/code/environments/production/modules/file/files/, par exemple sous les nomsRootCA.pemetSubCA.pem. - On crée la classe suivante :
class install_ca {
# Création du dossier de dépôt
file {'/usr/share/ca-certificates/extra':
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0750',
}
# Déploiement du certification racine
file {'/usr/share/ca-certificates/extra/RootCA.pem':
ensure => 'present',
owner => 'root',
group => 'root',
mode => '0644',
content => file('file/RootCA.pem'),
}
# Déploiement du certificat intermédiaire
file {'/usr/share/ca-certificates/extra/SubCA.pem':
ensure => 'present',
owner => 'root',
group => 'root',
mode => '0644',
content => file('file/SubCA.pem'),
}
# Ajout du certificat racine dans la bibliothèque des certificats
file_line { 'RootCA':
ensure => present,
match => "^extra/RootCA.pem",
path => '/etc/ca-certificates.conf',
line => 'extra/RootCA.pem',
}
# Ajout du certificat intermédiaire dans la bibliothèque des certificats
file_line { 'SubCA':
ensure => present,
match => "^extra/SubCA.pem",
path => '/etc/ca-certificates.conf',
line => 'extra/SubCA.pem',
}
# Mise à jour de la bibliothèque en cas de modification
exec { 'update-ca-certificates':
command => '/usr/sbin/update-ca-certificates',
subscribe => [
File['/usr/share/ca-certificates/extra/RootCA.pem'],
File['/usr/share/ca-certificates/extra/SubCA.pem'],
],
refreshonly => true,
}
}
- Il ne reste plus qu'à ajouter la classe aux postes concernés dans le fichier
node.ppou à tous les postes via le fichiersite.pp.
Navigateurs
SousDebian et Ubuntu, les navigateurs Firefox et Chrome utilisent leurs propres banques de certificats. Il faudra donc les importer manuellement.Conclusion
Désormais, nous disposons d'une autorité de certification racine et d'une autorité intermédiaire fonctionnelles et toutes deux reconnues par les postes clients de l'organisation. L'étape suivante est de créer des certificats pour nos besoins.
- Création d'un certificat TLS pour un serveur web : Lien
Discussion