200 likes | 505 Views
TP de mise en oeuvre d’une PKI avec Openssl. But du TP. Créer une infrastrucure à clefs publiques (PKI) permettant de générer des certificats serveur et client Nous allons de plus créer une autorité fille intermédiaire qui signera tout les certificats
E N D
But du TP • Créer une infrastrucure à clefs publiques • (PKI) permettant de générer des certificats • serveur et client • Nous allons de plus créer une autorité fille • intermédiaire qui signera tout les certificats • et pourra être remplacé si un pirate vole sa • clef privée, car l’autorité racine sera, elle, en • sureté.
Schéma On commence par créer un certificat racine On créé ensuite une autorité fille CA Root Clef pub: 00110100 11001100 01110101 Signée par la CA Autosigné CA Root CAssl Clef pub: 00110100 10100100 01110101 CA Root
Schéma On créé ensuite une demande certificat serveur CA Root Clef pub: 00110100 11001100 01110101 On refait les mêmes opérations pour le certificat client Que l’on va signer avec l’autorité fille CA Root CAssl Clef pub: 00110100 10100100 01110101 Cert Server Clef pub: 00110100 10100100 01110101 Cert Client Clef pub: 00110100 10100100 01110101 CA Root CAssl CAssl
Création du fichier openssl.cnf • Sur le site: • http://www.hsc.fr/ressources/breves/ssl_configuration.html.fr • Aller dans les annexes et copier le contenu • du fichier openssl.cnf • Coller ce contenu dans un fichier openssl.cnf • que vous pouvez créer n’importe où • Vous pouvez changer les valeurs de • [ req_distinguished_name ] dans ce fichier
Création des répertoires • Créez un répertoire pour votre PKI, par • exemple: • # mkdir /tp_pki • Copiez openssl.cnf dans ce répertoire • Allez dans ce répertoire
Création des répertoires (2) • Créez les répertoires et fichiers nécessaires • au bon fonctionnement • On crée les fichiers et répertoires nécessaires : • $ mkdir -p ca/newcerts # Répertoire recueillant les certificats • # émis par CA ROOT • $ touch ca/index.txt # Base de données des certificats émis • $ echo '01' > ca/serial # Numéro de série, initialisé à 1. • # Incrémenté par la suite • $ mkdir -p cassl/newcerts #idem, pour CA SSL • $ touch cassl/index.txt • $ echo '01' > cassl/serial
Création du certificat CA • On crée un couple de clefs (publique/privée) • $ openssl genrsa -out ca/ca.key -des3 2048 • On crée ensuite un certificat qui va être • signé (validé) par lui-même, car il est le • certificat racine • # openssl req -new -x509-key ca/ca.key -out ca/ca.pem • -config ./openssl.cnf -extensions CA_ROOT • Vous devriez donc avoir ce certificat • autosigné dans le répertoire ca, nommé ca.pem
Vérification du certificat CA • Le certificat est au format .pem et n’est donc • pas directement lisible sous unix. Pour cela, • il y a une commande openssl : • $ openssl x509 -in ca/ca.pem -text -noout
Création du certificat CAssl (fille) • On crée un couple de clefs (publique/privée) • $ openssl genrsa -out cassl/cassl.key -des3 2048 • On crée ensuite un certificat non signé (.crs • certificate signing request) ATTENTION de bien • utiliser les mêmes valeurs de pays, ville, etc. • Seuls les name et email changent • # openssl req -new -key cassl/cassl.key -out cassl/cassl.crs • -config ./openssl.cnf • Et on le signe avec la clef privée de • l’autorité, la CA. • # openssl ca -out cassl/cassl.pem -config ./openssl.cnf -extensions • CA_SSL -infiles cassl/cassl.crs
Création du certificat CAssl (fille) • Il en ressort un beau certificat signé cassl.pem • a vérifier !!! • $ openssl x509 -in cassl/cassl.pem -text -noout • Le fichier cassl.pem a été créé car on l’a • explicitement demandé -out cassl/cassl.pem • Sinon, un fichier identique a été créé dans • ca/newcerts/01.pem
Création du certificat serveur • On crée un couple de clefs (publique/privée) • # openssl genrsa -out cassl/serverssl.key -des3 1024 • On crée ensuite un certificat non signé • # openssl req -new -key cassl/serverssl.key -out cassl/serverssl.crs • -config ./openssl.cnf • Que l’on signe avec l’autorité fille (cassl.pem) • # openssl ca -out cassl/serverssl.pem -name CA_ssl_default • -config ./openssl.cnf -extensions SERVER_RSA_SSL • -infiles cassl/serverssl.crs • Attention, j’ai ajouté ici -out cassl/serverssl.pem • pour créer explicitement le certificat • serverssl.pem qui est en fait une copie de • cassl/newcerts/01.pem
Création du certificat client • On crée un couple de clefs (publique/privée) • # openssl genrsa -out cassl/serverssl.key -des3 1024 • On refait les même commandes que pour • le certificat serveur, en remplaçant par “client” • # openssl req -new -key cassl/clientssl.key -out cassl/clientssl.crs • -config ./openssl.cnf • # openssl ca -out cassl/clientssl.pem -name CA_ssl_default • -config ./openssl.cnf -extensions CLIENT_RSA_SSL • -infiles cassl/clientssl.crs
Exportation du certificat client • On transforme le .pem en .p12 qui est un • format exécutable sous windows ou linux • pour mettre en place facilement le certificat • $ openssl pkcs12 -export -inkey cassl/clientssl.key • -in cassl/clientssl.pem -out clientssl.p12 -name "Certificat client" • Et hop ! vous pouvez maintenant en créer • autant que vous voulez en réitérant cette • démarche, avec les bonnes options • Vous pouvez aussi créer un script qui • automatise toute cette démarche