Afficher la pageAnciennes révisionsLiens de retourAjouter au livre.Exporter en PDFExportation ODTImport Word DocumentHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Autorité de certification privée avec Easy RSA ====== **//Contributeurs : Démarche reprise du travail de A. Leroy et T. Ledoux (SISR2022)//** **//Source//** : https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-debian-10-fr RSA (Rivest–Shamir–Adleman du nom des créateurs) est un système cryptographique de gestion de clés asymétriques. L'**outil easy-rsa** est son implémentation, notamment sous Linux. Cet outil permet de mettre en place une <wrap em>infrastructure à clé publique</wrap> ou [[autoritecertif|autorité de certification]]. ===== Installation et configuration ===== <WRAP center round box 60%> === Procédure ==== - installer le paquetage easy-rsa - [préparation du dossier de gestion de l'infrastructure] - paramétrage du fichier de configuration - création de l'autorité de certification </WRAP> ==== Installation du paquetage ==== <code lscript> apt update apt install easy-rsa</code> ==== Préparation du dossier (optionnel) ==== L'installation ajoute des fichiers dans **///usr/share/easy-rsa//**. Pour simplifier l'accès, on peut créer un dossier virtuel lié par un lien symbolique au dossier /usr/share/easy-rsa/. <code lscript>mkdir ~/easy-rsa ln -s /usr/share/easy-rsa/* ~/easy-rsa/ chmod 700 ~/easy-rsa cd ~/easy-rsa ./easyrsa init-pki</code> ==== Paramétrage du fichier ==== Par défaut, l'outil exploite des valeurs prédéfinies. On doit donc les personnaliser en fonction du contexte en adaptant le fichier exemple disponible lors de l'installation (qu'on va copier). <code lscript> cd ~/easy-rsa cp vars.example pki/vars nano pki/vars</code> On ira modifier les paramétrages, notamment ceux d'identification de l'entreprise pour l'autorité (les numéros de ligne sont donnés à titre indicatif). On peut laisser les valeurs par défaut sur les algorithmes pour plus de compatibilité. <code apache> 95 - set_var EASYRSA_REQ_COUNTRY "VOTREPAYS" 96 - set_var EASYRSA_REQ_PROVINCE "VOTREREGION" 97 - set_var EASYRSA_REQ_CITY "VOTREVILLE" 98 - set_var EASYRSA_REQ_ORG "VOTREENTREPRISE" 99 - set_var EASYRSA_REQ_EMAIL "EMAILADMIN" 100 - set_var EASYRSA_REQ_OU "NOMDUSERVICE" #valeurs à adpater ou laisser par défaut 117 - set_var EASYRSA_ALGO rsa 214 - set_var EASYRSA_DIGEST </code> ==== Création d'une autorité de certification ==== Lors de la création de l'autorité, le système demande une **passphrase** (phrase secrète) qui permet de sécuriser les actions futures (certification des demandes). On se verra aussi demander le nom de l'autorité (qui sera reconnue par les navigateurs). <code lscript>./easyrsa build-ca</code> Deux fichiers ont été créés : * ca.crt c'est le certificat public de l'AC. C'est ce fichier qu'il faut distribuer aux différents clients. Il se trouve dans le dossier **//pki//** * ca.key qui est la clé privée de l'AC, présente dans **//pki/private//** ===== Ajout du certificat de l'autorité sur le client ===== L'autorité ainsi créée n'est pas reconnu par les navigateurs. Il est donc nécessaire d'ajouter le certificat de l'autorité au navigateur pour qu'il puisse l'interroger pour faire valider les certificats des serveurs qu'elle a signé. **__Procédure__** * Récupérer le certificat ca.crt de l'AC * Aller dans les **//paramètres//** du navigateur (la démarche est décrite pour Firefox), * dans la partie **//vie privée et sécurité//** * **//afficher les certificats//** * **//importer le certificat//** ===== Gestion des demandes de certificat authentique ===== <WRAP center round box 60%> Procédure * <wrap em>Sur la machine à sécuriser (avec [[ssl|SSL]])</wrap> * créer la clé privée * créer la demande **CSR** * envoyer le fichier **CSR** vers l'**AC** * <wrap em>sur l'AC</wrap> * importer le fichier **CSR** * signer le fichier **CSR** * retourner le certificat **CRT** généré vers le serveur à sécuriser * <wrap em>sur le serveur à sécuriser</wrap> * intégrer le certificat **CRT** authentique dans la configuration du service à sécuriser (Web, FTP ou autre) </WRAP> ==== Création et signature d’une demande de certificat sur le serveur à sécuriser ==== **__Si ce n'est pas déjà le cas__**, on installe l'environnement. <WRAP center round tip 90%> <code lscript> //on suppose qu'on part de rien. Si l'environnement est déjà installé, on adaptera les commandes ci-dessous. apt update apt install openssl //pour les certificats mkdir /etc/ssl/certs //pour les clés privées mkdir /etc/ssl/private cd /etc/ssl/private </code> </WRAP> **__si ce n'est pas fait, on crée la clé privée__** <WRAP center round tip 90%> <code lscript> cd /etc/ssl/private //création de la clé privée openssl genrsa -out <nomcle.key> </code> </WRAP> === création d'une demande CSR === <code lscript>cd /etc/ssl/certs openssl req -new -key ../private/<nomcle.key> -out <demandeCertif.csr> </code> <wrap em>Après cela il faut copier le fichier **.csr** sur l'**Autorité**</wrap> On le fera avec un compte d'accès basique dans le dossier **///tmp//**. <code lscript>scp <demandeCertif.csr> <compte>@<machineAutorite>:/<dossierDestination> </code> ==== Signature d’une CSR sur l'AC ==== **On agit à présent sur l'autorité pour signer la demande et produire le certificat** <WRAP center round important 60%> On suppose que le fichier de requête est présent dans le dossier /tmp sur l'AC. </WRAP> <code lscript>cd ~/easy-rsa //importe la demande sous un nom qui gardera la trace sur l'AC ./easyrsa import-req /tmp/<demandeCertif.csr> <certif_nomserver> //signe la demande importée à destination d'un 'server' (pourrait être 'client' ou 'ca') ./easyrsa sign-req server <certif_nomserver></code> Il faut **récupérer le fichier .crt** au chemin suivant : **//~/easy-rsa/pki/issued/certif_nomserver.crt//** et le copier sur le serveur à sécuriser dans le dossier qui contient ses certificats. <code lscript>scp ~/easy-rsa/pki/issued/<certif_nomserver>.crt <comptedistant>@<serveraSecuriser>:/<dossier></code> Voir ensuite [[https://wiki.inforostand14.net/doku.php?id=ssl#configuration_d_apache_avec_ssl_tls|SSL/TLS]] pour le passage de HTTP vers HTTPS d'un site en prenant en compte ce certificat authentique. ===== Révocation de certificat authentique ===== A la suite d'un événement inattendu (compromission, sortie d'un réseau ou de l'entreprise, etc), les certificats garantis par l'AC ne doivent plus être considérés comme valide. Il faut donc //**révoquer**// les certificats concernés, puis **//propager//** l'information auprès des machines qui ont enregistré la validité d'un certificat (normalement les clients, mais aujourd'hui les serveurs OCSP utilisent un mécanisme de propagation automatisé). __**Sur l'AC**__ <code lscript>cd ~/easy-rsa //révocation ./easyrsa revoke <certif_server-web> //génération de la liste des révocation de certificat (Certificates Revocation List - CRL) ./easyrsa gen-crl </code> La commande //**gen-crl**// crée un fichier **//~/easy-rsa/pki/crl.pem//**. Celui-ci doit être envoyé à toutes les machines (postes utilisateurs, serveur qui hébergeait le certificat, y compris l'AC) qui faisaient confiance aux certificats révoqués (en **scp** par exemple). __**sur les machines à mettre à jour**__ On devra importer la liste sur les serveurs devant prendre en compte la nouvelle liste des révocations <code lscript>openssl crl -in <chemin>/crl.pem -noout -text</code> easyrsaca.txt Dernière modification : 2025/11/13 11:36de serge.guerinet