Certificats - IUT de Nice
Transcription
Certificats - IUT de Nice
Concepteur original : P. Mathieu Applications de cryptographie: GPG + Certificats I. GPG Créer une biclé GPG (couple clé publique/privée) en choisissant l'option par défaut de taille 1024 bits et en prenant un type par défaut (RSA/RSA) : gpg –-gen-key Lister votre trousseau de clef (il ne doit y avoir que la votre!): gpg –-list-keys Pour pouvoir exporter votre clef (par exemple dans un dépôt public ou par mail) utilisez la commande : gpg --armor --output pubkey.txt --export 'Your Name' Faites un « more » sur le fichier pubkey.txt et sur le fichier dans lequel se trouve votre clef publique dans le répertoire ~/.gnupg (quel est ce fichier?). Quel est l'intérêt de l'exportation ? Signez un GROS fichier toto.fic que vous fabriquez vous-mêmes en mettant du contenu dedans (par exemple faites un cat /etc/shadow >> toto.fic plein de fois) gpg –-sign toto.fic Quel fichier a été généré? Vérifier la signature du fichier. gpg –-verify toto.fic.gpg Quelles clefs ont été utilisées pour les deux étapes (signature et vérification) ? Créer une signature détachée et vérifier la signature de la même façon. Quel est l'avantage (regarder la taille de la signature attachée et détachée) ? Vous pouvez aussi crypter avec votre clef : gpg –-encrypt -r 'Votre Nom' toto.fic Decrypter. Quelles clefs ont été utilisées ? Vous pouvez aussi crypter le fichier pour votre un autre utilisateur dont vous avez la clef. Commencez par aller se faire des amis sur http://keyserver.pgp.com/ . Par exemple, cherchez John. Télécharger la clef de votre nouvel ami John (le premier de la liste par exemple) et importez la: gpg --import key.asc Lister votre trousseau. Crypter pour John Décrypter. II. Faire des Certificats Nous allons d'abord créer une autorité de certification, puis générer des certificats. 1. Faire un certificat rapidement a) Certificat auto-certifié On le fait en une commande /usr/lib/ssl/misc/CA.sh -newcert Visualisation du certificat openssl x509 -in newcert.pem -text Un certificat est fait par quelqu'un (qui le signe) et pour quelqu'un. Quels champs correspondent au "par" et au "pour" ? Pourquoi est-ce que ce certificat est dit auto-certifié? Quels champs l'indiquent dans l'en tête? Quelle est la clef publique qui a été signée? A quel symbole introduit dans le cours correspond le « modulus »? Avec quelle clef a été signé le résumé du certificat? Avec quel algorithme openssl a-t-il créée le résumé? Lire le second fichier généré : openssl rsa -in newkey.pem -text Que contient-il? Avec quel algorithme a-t-il chiffré (lire directement newkey.pem) b) Test du certificat avec un serveur Web Une manière de tester votre nouveau certificat est de démarrer un serveur Web qui l'utilise pour s'authentifier. On peut le faire avec un serveur Apache, mais openssl nous permet de le faire en faisant un pseudo serveur Web : Page 2 / 6 Applications de cryptographie openssl s_server -cert newcert.pem -key newkey.pem -accept 443 -www Le serveur doit écouter sur le port 443. Avec quelle commande vérifiez-vous qu'il est actif. Sur quelle(s) interface(s) de la machine virtuelle accepte-t-il les connexions? Connectez-vous sur le site avec Firefox depuis la machine physique en https. Quel est le comportement de firefox à la connexion ? Expliquez pourquoi. 2. Maîtrise des paramètres a) L'autorité de certification Attention de bien mémoriser le mot de passe de la CA. Répondre par la touche return (⏎) à la première question car vous n'avez pas de certificat de CA à présenter. Ensuite, remplissez normalement : il faut absolument remplir le champ Canonical name. /usr/lib/ssl/misc/CA.pl -newca b) Demande de certificat /usr/lib/ssl/misc/CA.pl -newreq Name) (pareil, il faut le champ Canonical c) Signature du certificat Attention de bien mémoriser le mot de passe de la CA /usr/lib/ssl/misc/CA.pl -sign Lisez le certificat obtenu avec openssl et prouvez qu'il n'est pas auto-signé. Vérification du certificat /usr/lib/ssl/misc/CA.pl -verify newreq.pem Quelle opération est faite? 3. Extraits du certificat Visualisation de certains champs Page 3 / 6 openssl x509 -in newcert.pem -subject -issuer -pubkey Chargement de format openssl x509 -in newcert.pem -inform PEM -out newcert.cer -outform DER Cherchez sur Internet pour expliquer la différence entre PEM et DER. III. Vérifier des certificats avec openssl Récupérez sur le site Web http://iutsa.unice.fr/~urvoy/ext/Cours/M3104/https_google.dmp du cours M3104 le fichier https_google.dmp qui est un début d'échange ssl avec Yahoo. SSL sert notamment ici à identifier le serveur. Cela se passe comme suit. Le serveur envoie un certificat qui contient, entre autres information, son nom, sa clef publique et un résumé chiffré des informations à la fin du certificat. Ce résumé est chiffré par une autorité de certification. On va ici faire « à la main » ce que fait openssl quand il reçoit le certificat, c'est à dire vérifier que le certificat est valide par vérification du résumé chiffré. Cela suppose qu'openssl connaisse la clef publique de l'autorité de certification. Les systèmes d'exploitation et les navigateurs viennent avec un ensemble de clefs publiques. Voici un exemple de certificat avec les parties qui nous intéressent : Page 4 / 6 Applications de cryptographie 1. Extraction du certificat Ouvrez le fichier avec wireshark Cherchez dans les paquets SSL non chiffrés du début de l'échange, la partie certificate. Sélectionnez le certificat puis sauvegardez le dans un fichier google.der 2. Lecture du certificat Le certificat est dans un format particulier. Nous allons le changer de format avant de pouvoir le lire avec openssl. Pour ce faire, appliquez la commande suivante en remplaçant mycert par yahoo On peut maintenant lire le certificat avec openssl en effectuant la commande : openssl x509 -in yahoo.pem -text Page 5 / 6 3. Vérification du certificat Pour faire la vérification du certificat, il faut télécharger la clef publique de l'autorité de certification. Trouvez son nom et télécharger le certificat (auto-signé par l'autorité avec sa clef publique) depuis le site Google internet authority : prenez l'ancien certificat geotrust... Placez le certificat dans un répertoire Certs que vous aurez créé préalablement. Pour des raisons techniques openssl travaille avec des liens logiques vers les certificats et non les certificats directement. Pour ce faire, convertissez le certificat du mode DER en PEM comme précédemment. Appliquez ensuite la commande : c_rehash Certs/nom_du_certi_en_pem qui va faire le travail. Vérifiez que : 1. Si on ne spécifie pas ce répertoire, openssl n'arrive pas vérifier le certificat en appliquant la commande : openssl verify google.pem 2. Si on spécifie le répertoire, openssl arrive à vérifier le certificat, en appliquant la commande : openssl verify -Cafile ./Certs google.pem Page 6 / 6 Applications de cryptographie
Documents pareils
OpenSSL - IUT de Nice
gpg –-sign toto.fic
Quel fichier a été généré?
Vérifier la signature du fichier.
gpg –-verify toto.fic.gpg
Quelle clef a été utilisée ??
Créer une signature détachée et vérifier la signature de la ...