Travail pratique 5 : une PKI par OpenSSL
Transcription
Travail pratique 5 : une PKI par OpenSSL
INF4470 Fiabilité et sécurité informatique (Hiver 2010) 1/3 Travail pratique 5 : une PKI par OpenSSL Section 1 : création d'un certificat autosigné === DESCRIPTION GÉNÉRALE DE L'EXPÉRIMENTATION === Avant toute opération asymétrique, on doit créer la paire de clés (une privée et une publique), et on certifiera la clé publique. Cette partie du laboratoire vous permettra d'observer les techniques de création de certificats et le contenu de ceux-ci. === MANIPULATIONS === Dans cette section nous allons créer un certificat que nous signerons à l'aide de notre propre clé, il s'agit alors d'un certificat autosigné. Pour ce faire, suivez les manipulations suivantes en portant attention aux paramètres entrés et aux résultats obtenus (fichiers créés) : Paramétrisation pour la génération de clés echo 01 > serial (création d'un fichier nommé « serial » contenant '01') touch index.txt (création d'un fichier texte vide nommé « index.txt ») Création d'une paire de clés asymétriques openssl genrsa -out inf4470.key -des3 1024 Verification clé privée : openssl rsa -check -in inf4470.key Vérification clé publique : openssl rsa -pubout -in inf4470.key openssl rsa -text -noout -in inf4470.key Création d'un certificat autosigné : openssl req -x509 -new -key inf4470.key -out inf4470.pem Vérification du certificat : openssl x509 -purpose -in inf4470.pem openssl x509 -text -in inf4470.pem INF4470 Fiabilité et sécurité informatique (Hiver 2010) 2/3 Section 2 : création d'une PKI et utilisation de S/MIME === DESCRIPTION GÉNÉRALE DE L'EXPÉRIMENTATION === Pour cette partie nous n'utiliserons pas le certificat autosigné créé dans la partie précédente. Mais de la même façon, nous allons créer une autorité de certification (AC) et des certificats pour deux clients. Le certificat d'une autorité de certification est soit autosigné, soit signé par une autorité de certification parente. Pour notre expérimentation, nous allons créer une autorité de certification racine (certificat autosigné) qui signera les certificats des deux clients. Pour simplifier la création je vous ai préparé un fichier de configuration nommé "openssl.cnf". Sauvegardez ce fichier dans votre répertoire de travail. === MANIPULATIONS === Voici les commandes entrées pour la création de certificats (assurez-vous préalablement que le fichier "openssl.cnf" soit dans le répertoire courant) : Autorité de Certification (AC) : touch index.txt echo 01 > serial openssl genrsa -out ca.key -des3 1024 openssl req -x509 -new -key ca.key -out ca.pem -days 365 -config ./openssl.cnf -extensions CA_MIME openssl x509 -in ca.pem -purpose -text Client 1 (pour le chiffrement) : openssl genrsa -out cl1.key -des3 1024 openssl req -new -key cl1.key -out cl1.crs -config ./openssl.cnf -extensions CLIENT_MIME openssl ca -config openssl.cnf -extensions CLIENT_MIME -cert ca.pem -keyfile ca.key -out cl1.pem -infiles cl1.crs openssl x509 -in cl1.pem -purpose -text Client 2 (pour la signature) : openssl genrsa -out cl2.key -des3 1024 openssl req -new -key cl2.key -out cl2.crs -config ./openssl.cnf -extensions CLIENT_MIME openssl ca -config openssl.cnf -extensions CLIENT_MIME -cert ca.pem -keyfile ca.key -out cl2.pem -infiles cl2.crs openssl x509 -in cl2.pem -purpose -text INF4470 Fiabilité et sécurité informatique (Hiver 2010) 3/3 Maintenant que nous sommes en possession d'une infrastructure de certificats et des clés privées qui leurs sont associées, prenons le scénario de l'échange de courriel protégé par S/MIME. Voulant transmettre le message contenu dans "msg", un expéditeur peut désirer chiffrer ou signer ce message pour en sécuriser la transmission. Créez un fichier contenant un court texte et nommez ce fichier "msg". Chiffrement openssl smime -encrypt -in msg -des3 -out mailchif cl1.pem Déchiffrement openssl smime -decrypt -in mailchif -recip cl1.pem -inkey cl1.key -out maildechif Signature openssl smime -sign -in msg -out mailsign -text -signer cl2.pem -inkey cl2.key Vérification de la signature openssl smime -verify -in mailsign -CAfile ca.pem === QUESTIONS === 1- Nommez les extensions contenus dans le certificat inf4470.pem et donnez leur signification. 2- Le certificat du client 1 (destiné au chiffrement) peut aussi servir à signer, et celui du client 2 (destiné à la signature) peut aussi servir au chiffrement. Que devez-vous faire pour restreindre cl1 au chiffrement S/MIME et cl2 à la signature S/MIME ? 3- Qu'arrive-t-il si on remplace ca.pem par le certificat du signataire (cl2.pem) dans la dernière commande entrée ? Soyez précis dans la description de ce qui se passe alors, et dites aussi pourquoi c'est ce qui arrive. (Indice : pourquoi ca.pem est donné en paramètre ?) === À REMETTRE === Vos réponses aux trois questions.