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.