TRAVAUX PRATIQUES
TP 1 : OpenSSL (exercice à réaliser sur machine)
OpenSSL est un ensemble d’utilitaires de cryptographie implémentant SSL v2/v3 (Secure
Sockets Layer) et TLS v1 (Transport Layer Security) et les standards qu’ils requièrent (en
particulier ceux des PKI).
1. Création d’un fichier de caractères aléatoires : Sous Linux (depuis la version 1.3.30), il
existe un fichier, réservoir d’entropie, (/dev/urandom, crée à partir de différentes sources
aléatoires hardware). A l’aide de dd, comment créer un fichier aléatoire .rand d’au moins
16ko, avec 16 blocs distincts ?
2. Mise en place d’un CA8 : Créer un répertoire demoCA et des sous répertoires private,
certs, crl et newcerts. Entrer un numéro de série dans le fichier demoCA/serial, et créer un
fichier demoCA/[Link]. Définir les droits d’accès à tous ces répertoires et fichiers.
(a) Avec openssl genrsa, comment créer une paire de clefs de 4096 bits en utilisant votre
fichier aléatoire ? Cette clef sera stockée dans un fichier demoCA/private/[Link] et
cryptée sur le disque par AES-256 bits.
(b) Avec openssl req, comment créer un nouveau certificat racine auto-signé, à l’aide de la
clef précédente ? Ce certificat devra être au format X509, stocké dans le fichier
demoCA/[Link] et valable 365 jours.
3. Certificat utilisateur.
– Avec openssl, comment créer une paire de clefs RSA de 1024 bits ?
– Comment faire une requête de certificat, avec openssl req, en utilisant cette clef. Cette
requête devra contenir également la clef et être valable 2 mois.
– Avec openssl ca, comment demander au CA de répondre à votre requête ? Cette
requête devra créer un fichier certificat [Link] et spécifier la politique de
sécurité par défaut policy_anything.
4. Application à l’envoi de courriels sécurisés.
Des clients de courriel (par exemple Thunderbird) utilisent plutôt le format PKCS12 pour les
certificats au lieu du format X509. Comment ajouter un certificat créé ci-dessus `a un client
de ce type ? Que se passe-t-il si la clef privée associée à ce certificat est perdue ? En
particulier :
(a) Peut-on toujours envoyer des courriels chiffrés ? En recevoir ?
(b) Peut-on toujours signer des courriels qu’on envoie ? Vérifier les signatures des
courriels reçus ?
Correction
TP N° 2 : (OpenSSH sous Linux).
La commande ssh sous Linux lance un programme pour se connecter sur une machine
distante et pour exécuter des commandes sur cette machine, en suivant le protocole SSH.
Dans le
ré[Link], à la racine du répertoire utilisateur, ce programme maintient un fichier
known_hosts des serveurs sur lesquels l’utilisateur s’est connecté. La première connexion est
considérée comme sûre et les suivantes sont authentifiées par la clef publique stockée dans le
[Link]/known_hosts.
1. Comment rendre cette authentification du serveur sûre ?
2. Plusieurs méthodes d’authentification du client sont alors possibles (clef publique, mot de
passe, clavier) ; comment générer une paire clef publique
/ clef privée de type DSA sur 2048 bits avec l’utilitaire ssh-keygen ?
3. Ajouter la clef publique ainsi générée au fichier authorized_keys dans
le ré[Link] d’un compte tiers ; connectez-vous sur ce compte en utilisant ssh-v. Que
constatez-vous ?
4. Détruire le fichier known_hosts. Se reconnecter sur une autre machine. A quel message
doit-on s’attendre ?
5. Modifier le fichier known_hosts en changeant une clef publique. A quel message doit-on
s’attendre ?
Correction