Académique Documents
Professionnel Documents
Culture Documents
23 octobre 2012
3 Certicats 5
3.1 Gnration de la paire de cls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Cration d'une requte de certicats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Demande de signature de certicat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Signature et chirement de courriers lectroniques . . . . . . . . . . . . . . . . . . . . . . 8
1 Prsentation de openSSL
1.1 Protocole SSL
Le protocole SSL (Secure Socket Layer) a t dvelopp par la socit Netscape Communications
Corporation pour permettre aux applications client/serveur de communiquer de faon scurise. TLS
(Transport Layer Security) est une volution de SSL ralise par l'IETF.
La version 3 de SSL est utilise par les navigateurs tels Netscape et Microsoft Internet Explorer depuis
leur version 4. SSL est un protocole qui s'intercale entre TCP/IP et les applications qui s'appuient sur
TCP. Une session SSL se droule en deux temps
1. une phase de poigne de mains (handshake) durant laquelle le client et le serveur s'identient,
conviennent du systme de chirement et d'une cl qu'ils utiliseront par la suite.
2. la phase de communication proprement dite durant laquelle les donnes changes sont compresses,
chires et signes.
L'identication durant la poigne de mains est assure l'aide de certicats X509.
1.2 openSSL
openSSL est une bote outils cryptographiques implmentant les protocoles SSL et TLS qui ore
1. une bibliothque de programmation en C permettant de raliser des applications client/serveur
scurises s'appuyant sur SSL/TLS.
2. une commande en ligne (openssl) permettant
la cration de cls RSA, DSA (signature)
la cration de certicats X509
le calcul d'empreintes (MD5, SHA, RIPEMD160, ...)
le chirement et dchirement (DES, IDEA, RC2, RC4, Blowsh, ...)
1
la ralisation de tests de clients et serveurs SSL/TLS
la signature et le chirement de courriers (S/MIME)
Pour connatre toutes les fonctionnalits de openSSL : man openssl.
La syntaxe gnrale de la commande openssl est
$ o p e n s s l <commande> < o p t i o n s >
(le $ est le prompt du shell). Dans le texte qui suit, les commandes invoquant openssl supposent que
cette commande est dans votre PATH.
o chier est un nom de chier de sauvegarde de la cl, et taille et la taille souhaite (exprime en bits)
du modulus de la cl.
Par exemple, pour gnrer une paire de cls de 1024 bits, stocke dans le chier maCle.pem, on tape
la commande
$ o p e n s s l g e n r s a out maCle . pem 1024
Le chier obtenu est un chier au format PEM (Privacy Enhanced Mail, format en base 64), dont
voici un exemple
$ c a t maCle . pem
BEGIN RSA PRIVATE KEY
MIICXAIBAAKBgQCveVjLltevTC5kSAiTYjHMVuAR80DHMLWCp3BOVZ49eXwraXxO
7AfKWpA5g0wFZgZNERIfFYaCnvaQDQA+9BRIfsSSr3oSw0My5SD6eg15v0VmJmvP
d8LgBypJHbr6f5MXWqntvzp0Qvg6ddeNpUIrqkkh4uDfHFDWqyrkQUCvKwIDAQAB
AoGANchUrfnq28DWy0fE0R+cscvC292Z8jN8vrIBWxEk8iSlKU0om6v+a0g8wlP6
3 gC6V66uxjY7xxdf7SD+/UykVl4PGFymhLtywSdGlgec3tLgBtV3ytJFilAVDBij
LzQwUegCO4zt1JWYc6vvaVdNyQSaGIIeYGsNDWEYlOtDSlkCQQDVRn9JS15G8p+H
4Z0PbU9ZQg2L1u9/SD/kELVe3Kx1fdHulxH0v8V2AgPdXA29Nhi+TxUtC+V8CMc2
KXmAvFsHAkEA0qBDmjHMDPwcGaqbQ2lymYQIGlZ5TLQFA98Dey2uE+CB6pmS/ e /Z
ilu1IaasuE3vBzXfB /JU7DUkV++JQ7TtvQJBAL2s5dUch2sXqlOhjhpDP/eE7CE6
9WLAsbm2Nmd4YJRZYtQLXPfLeeSapC9BCCMHsnfGQ3H9i4mFEQ6VUi7w1Q8CQAQa
pVaS09QI8Y86eM4GdvowzWud9b0d4N8jcFDtIfA3NrDYjzmte8KraMsgEUuCET9F
uHPSL/9uRagE/dq44s0CQCMQU4PMqkMtwzCFsV8ZqLmkDPn1binIAwRLYFcsQRDt
gTi6rycz3Pk1hCVzBfyMd8zwqpwKmR5FoOXuJEv+mVg=
END RSA PRIVATE KEY
L'option -text demande l'achage dcod de la paire de cls. L'option -noout supprime la sortie nor-
malement produite par la commande rsa.
Par exemple
$ o p e n s s l r s a i n maCle . pem t e x t noout
P r i v a t e Key : ( 1 0 2 4 b i t )
modulus :
0 0 : a f : 7 9 : 5 8 : cb : 9 6 : d7 : a f : 4 c : 2 e : 6 4 : 4 8 : 0 8 : 9 3 : 6 2 :
2
3 1 : c c : 5 6 : e0 : 1 1 : f 3 : 4 0 : c7 : 3 0 : b5 : 8 2 : a7 : 7 0 : 4 e : 5 5 :
9 e : 3 d : 7 9 : 7 c : 2 b : 6 9 : 7 c : 4 e : e c : 0 7 : ca : 5 a : 9 0 : 3 9 : 8 3 :
4c :05:66:06:4 d :11:12:1 f :15:86:82:9 e : f6 :90:0 d :
0 0 : 3 e : f 4 : 1 4 : 4 8 : 7 e : c4 : 9 2 : a f : 7 a : 1 2 : c3 : 4 3 : 3 2 : e5 :
2 0 : f a : 7 a : 0 d : 7 9 : b f : 4 5 : 6 6 : 2 6 : 6 b : c f : 7 7 : c2 : e0 : 0 7 :
2 a : 4 9 : 1 d : ba : f a : 7 f : 9 3 : 1 7 : 5 a : a9 : ed : b f : 3 a : 7 4 : 4 2 :
f 8 : 3 a : 7 5 : d7 : 8 d : a5 : 4 2 : 2 b : aa : 4 9 : 2 1 : e2 : e0 : d f : 1 c :
5 0 : d6 : ab : 2 a : e4 : 4 1 : 4 0 : a f : 2 b
p u b l i c E x p o n e n t : 65537 ( 0 x10001 )
privateExponent :
3 5 : c8 : 5 4 : ad : f 9 : ea : db : c0 : d6 : cb : 4 7 : c4 : d1 : 1 f : 9 c :
b1 : cb : c2 : db : dd : 9 9 : f 2 : 3 3 : 7 c : be : b2 : 0 1 : 5 b : 1 1 : 2 4 :
f 2 : 2 4 : a5 : 2 9 : 4 d : 2 8 : 9 b : ab : f e : 6 b : 4 8 : 3 c : c2 : 5 3 : f a :
de : 0 0 : ba : 5 7 : ae : ae : c6 : 3 6 : 3 b : c7 : 1 7 : 5 f : ed : 2 0 : f e :
f d : 4 c : a4 : 5 6 : 5 e : 0 f : 1 8 : 5 c : a6 : 8 4 : bb : 7 2 : c1 : 2 7 : 4 6 :
9 6 : 0 7 : 9 c : de : d2 : e0 : 0 6 : d5 : 7 7 : ca : d2 : 4 5 : 8 a : 5 0 : 1 5 :
0 c : 1 8 : a3 : 2 f : 3 4 : 3 0 : 5 1 : e8 : 0 2 : 3 b : 8 c : ed : d4 : 9 5 : 9 8 :
7 3 : ab : e f : 6 9 : 5 7 : 4 d : c9 : 0 4 : 9 a : 1 8 : 8 2 : 1 e : 6 0 : 6 b : 0 d :
0d : 6 1 : 1 8 : 9 4 : eb : 4 3 : 4 a : 5 9
prime1 :
0 0 : d5 : 4 6 : 7 f : 4 9 : 4 b : 5 e : 4 6 : f 2 : 9 f : 8 7 : e1 : 9 d : 0 f : 6 d :
4 f : 5 9 : 4 2 : 0 d : 8 b : d6 : e f : 7 f : 4 8 : 3 f : e4 : 1 0 : b5 : 5 e : dc :
ac : 7 5 : 7 d : d1 : e e : 9 7 : 1 1 : f 4 : b f : c5 : 7 6 : 0 2 : 0 3 : dd : 5 c :
0d : bd : 3 6 : 1 8 : be : 4 f : 1 5 : 2 d : 0 b : e5 : 7 c : 0 8 : c7 : 3 6 : 2 9 :
7 9 : 8 0 : bc : 5 b : 0 7
prime2 :
0 0 : d2 : a0 : 4 3 : 9 a : 3 1 : c c : 0 c : f c : 1 c : 1 9 : aa : 9 b : 4 3 : 6 9 :
7 2 : 9 9 : 8 4 : 0 8 : 1 a : 5 6 : 7 9 : 4 c : b4 : 0 5 : 0 3 : d f : 0 3 : 7 b : 2 d :
ae : 1 3 : e0 : 8 1 : ea : 9 9 : 9 2 : f d : e f : d9 : 8 a : 5 b : b5 : 2 1 : a6 :
ac : b8 : 4 d : e f : 0 7 : 3 5 : d f : 0 7 : f 2 : 5 4 : e c : 3 5 : 2 4 : 5 7 : e f :
8 9 : 4 3 : b4 : ed : bd
exponent1 :
0 0 : bd : ac : e5 : d5 : 1 c : 8 7 : 6 b : 1 7 : aa : 5 3 : a1 : 8 e : 1 a : 4 3 :
3 f : f 7 : 8 4 : e c : 2 1 : 3 a : f 5 : 6 2 : c0 : b1 : b9 : b6 : 3 6 : 6 7 : 7 8 :
6 0 : 9 4 : 5 9 : 6 2 : d4 : 0 b : 5 c : f 7 : cb : 7 9 : e4 : 9 a : a4 : 2 f : 4 1 :
0 8 : 2 3 : 0 7 : b2 : 7 7 : c6 : 4 3 : 7 1 : f d : 8 b : 8 9 : 8 5 : 1 1 : 0 e : 9 5 :
5 2 : 2 e : f 0 : d5 : 0 f
exponent2 :
0 4 : 1 a : a5 : 5 6 : 9 2 : d3 : d4 : 0 8 : f 1 : 8 f : 3 a : 7 8 : c e : 0 6 : 7 6 :
f a : 3 0 : cd : 6 b : 9 d : f 5 : bd : 1 d : e0 : d f : 2 3 : 7 0 : 5 0 : ed : 2 1 :
f 0 : 3 7 : 3 6 : b0 : d8 : 8 f : 3 9 : ad : 7 b : c2 : ab : 6 8 : cb : 2 0 : 1 1 :
4b : 8 2 : 1 1 : 3 f : 4 5 : b8 : 7 3 : d2 : 2 f : f f : 6 e : 4 5 : a8 : 0 4 : f d :
da : b8 : e2 : cd
coefficient :
2 3 : 1 0 : 5 3 : 8 3 : c c : aa : 4 3 : 2 d : c3 : 3 0 : 8 5 : b1 : 5 f : 1 9 : a8 :
b9 : a4 : 0 c : f 9 : f 5 : 6 e : 2 9 : c8 : 0 3 : 0 4 : 4 b : 6 0 : 5 7 : 2 c : 4 1 :
1 0 : ed : 8 1 : 3 8 : ba : a f : 2 7 : 3 3 : dc : f 9 : 3 5 : 8 4 : 2 5 : 7 3 : 0 5 :
f c : 8 c : 7 7 : c c : f 0 : aa : 9 c : 0 a : 9 9 : 1 e : 4 5 : a0 : e5 : e e : 2 4 :
4b : f e : 9 9 : 5 8
Les dirents lments de la cl sont achs en hexadcimal (hormis l'exposant public). On peut
distinguer le modulus, l'exposant public (qui par dfaut est toujours 65537 1 ), l'exposant priv, les nom-
bres premiers facteurs du modulus, plus trois autres nombres qui servent optimiser l'algorithme de
dchirement.
Exercice 1. Donnez une explication du choix de la valeur 65537 pour exposant public par dfaut.
1. openssl n'autorise que deux exposants publics : 65537 (valeur par dfaut) ou 3 obtenu avec 'option -3
3
2.3 Chirement d'un chier de cls RSA
Il n'est pas prudent de laisser une paire de cls en clair (surtout la partie prive). Avec la commande
rsa, il est possible de chirer une paire de cls 2 . Pour cela trois options sont possibles qui prcisent
l'algorithme de chirement symtrique utiliser : -des, -des3 et -idea.
$ o p e n s s l r s a i n maCle . pem d e s 3 out maCle . pem
w r i t i n g RSA key
Enter PEM p a s s p h r a s e :
V e r i f y i n g Enter PEM p a s s p h r a s e :
Une phrase de passe est demande deux fois pour gnrer une cl symtrique protgeant l'accs la cl.
Exercice 2. Avec la commande cat observez le contenu du chier maCle.pem. Utilisez nouveau la com-
mande rsa pour visualiser le contenu de la cl.
Exercice 3.
Question 1. Notez le contenu du chier maClePublique.pem. Remarquez les marqueurs de dbut et de
n.
Question 2. Avec la commande rsa visualisez la cl publique. Attention vous devez prciser l'option
-pubin, puisque seule la partie publique gure dans le chier maClePublique.pem.
o
chier_entree est le chier des donnes chirer. Attention, le chier des donnes chirer ne doit
pas avoir une taille excessive (ne doit pas dpasser 116 octets pour une cl de 1024 bits).
cle est le chier contenant la cl RSA. Si ce chier ne contient que la parte publique de la cl, il
faut rajouter l'option -pubin.
chier_sortie est le chier de donnes chir.
Pour dchirer on remplace l'option -encrypt par -decrypt. Le chier contenant la cl doit videm-
ment contenir la partie prive.
Exercice 4. Chirez le chier de votre choix avec le systme symtrique de votre choix. Chirez la cl ou
le mot de passe utilis(e) avec la cl publique de votre destinataire (demandez-lui sa cl publique si vous
ne l'avez pas). Envoyez-lui le mot de passe chir ainsi que le chier chir.
o hachage est une fonction de hachage. Avec openssl, plusieurs fonctions de hachage sont proposes
dont
MD5 (option -md5), qui calcule des empreintes de 128 bits,
2. Il est possible de chirer le chier lors de sa gnration. Il sut de mettre l'une des trois options -des, -des3, -idea
dans la ligne de commande genrsa.
4
SHA1 (option -sha1), qui calcule des empreintes de 160 bits,
RIPEMD160 (option -ripemd160), qui calcule des empreintes de 160 bits.
Signer un document revient signer son empreinte. Pour cela, on utilise l'option -sign de la commande
rsautl
$ o p e n s s l r s a u t l s i g n i n < empreinte > \
i n k e y <c l e > \
out < s i g n a t u r e >
il reste ensuite vrier que l'empreinte ainsi produite est la mme que celle que l'on peut calculer.
L'option -pubin indique que la cl utilise pour la vrication est la partie publique de la cl utilise
pour la signature.
Exercice 5. Signez le chier de votre choix, puis vriez la signature.
Exercice 6. Rcuprez l'archive signatures.zip qui contient deux chiers accompagns d'une signature
chier : cigale.txt, signature : signature1
et chier : QuandLaMerMonte.txt, signature : signature2,
ainsi que la partie publique de la cl RSA ayant produit la signature : uneClePublique.pem.
De ces deux chiers, lequel a bien t sign ?
3 Certicats
Vous allez maintenant laborer un certicat pour votre cl publique. Puis, vous verrez comment utiliser
les cls certies pour signer et/ou chirer des courriers lectoniques.
5
$ c a t maRequete . pem
BEGIN CERTIFICATE REQUEST
MIIB/zCCAWgCAQAwgb4xCzAJBgNVBAYTAkZSMRIwEAYDVQQIEwlOb3JkICg1OSkx
GjAYBgNVBAcTEVZpbGxlbmV1dmUgZCdBc2NxMR4wHAYDVQQKExVVbml2ZXJzaXRl
IGRlIExpbGxlIDExGTAXBgNVBAsTEExpY2VuY2UgUHJvIERBMkkxGjAYBgNVBAMT
EUVyaWMgV2Vncnp5bm93c2tpMSgwJgYJKoZIhvcNAQkBFhlFcmljLldlZ3J6eW5v
d3NraUBsaWZsLmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCveVjLltev
TC5kSAiTYjHMVuAR80DHMLWCp3BOVZ49eXwraXxO7AfKWpA5g0wFZgZNERIfFYaC
nvaQDQA+9BRIfsSSr3oSw0My5SD6eg15v0VmJmvPd8LgBypJHbr6f5MXWqntvzp0
Qvg6ddeNpUIrqkkh4uDfHFDWqyrkQUCvKwIDAQABoAAwDQYJKoZIhvcNAQEEBQAD
gYEAHOwGNN6A8d4EhjfXCRvC2fhIjt7i6jxfkHKBkHpm2yNBBDHQwiv+O/Y0MeNh
I r a+y8KUMjeImsSiH4731sfgA6ycm+6JoDV7n6z8tzN5QMGsw7V3ErduskayKP4T
j a+BMImEcDwlr+KuRO704rGeiAG7pvtDGcDcj2Mex68ki94=
END CERTIFICATE REQUEST
6
0 c : 4 4 : d7 : 8 7 : 4 4 : 2 c : 4 b : e f : 3 8 : 5 b : 7 2 : 3 8 : de : f f : 7 4 : ae : 5 9 : 1 7 :
1 2 : f 5 : 8 7 : 8 c : 0 0 : 5 6 : 0 0 : 3 f : f 0 : d4 : 0 8 : d2 : c1 : 4 b : ae : 8 4 : 0 f : f 3 :
d5 : dd : ea : 4 8 : 0 b : 8 6 : 3 1 : 8 2 : c5 : f 5 : ae : 1 d : 5 2 : b2 : c6 : 7 4 : 6 2 : d1 :
f 7 : 9 4 : 4 3 : b2 : 5 d : 9 a : e5 : 5 2 : c1 : 4 8 : 1 0 : f f : 2 7 : bb : d5 : e c : 0 0 : b8 :
aa : 8 8 : 7 7 : c3 : 3 6 : f 9 : 8 7 : 4 1 : d9 : da : 5 8 : 9 a : c3 : 2 6 : 8 c : ba : e3 : 1 9 :
f e : 2 5 : 4 2 : 2 5 : 1 2 : b4 : d4 : 7 9 : e1 : d9 : b9 : 9 4 : d8 : 8 3 : 9 0 : 3 6 : ac : ca :
c6 : a7 : b2 : 9 c
Exercice 9. Expliquez les dirents lments contenus dans cette requte. La cl prive du sujet y gure
telle ?
L'autorit de certication Pre Ubu Vous jouerez dans ce TP le rle de l'autorit de certication.
Pour cela il vous faut un certicat d'autorit de certication, ainsi qu'une paire de cls. An de ne pas
multiplier les autorits, vous utilisereztous la trs notable autorit Pre Ubu dont vous trouverez ici le
certicat et la paire de cls RSA.
Un certicat produit par openssl est un chier au format PEM.
$ c a t u n C e r t i f . pem
BEGIN CERTIFICATE
....
END CERTIFICATE
Exercice 10. Aprs avoir rcupr le certicat de l'autorit, ainsi que sa paire de cls RSA, cherchez quelle
est la date d'expiration du certicat et la taille de la cl.
Cration d'un certicat Pour crer et signer un certicat partir d'une requte maRequete.pem,
l'autorit invoque la commande x509
$ o p e n s s l x509 days 10\
C A s e r i a l PereUbu . s r l \
CA P e r e U b u C e r t i f . pem CAkey PereUbuCle . pem\
i n maRequete . pem r e q out monCertif . pem
dans laquelle PereUbu.srl est un chier contenant le numro de srie du prochain certicat signer
(ce chier est un chier texte contenant une ligne donnant un nombre cod avec un nombre pair de chires
hexadcimaux), et l'option -days dtermine la dure de validit du certicat (ici 10 jours).
Exercice 11. Crz un certicat pour votre cl publique. (Lors de la signature du certicat, la commande
x509 invite l'autorit certiante donner son mot de passe. Le mot de passe de Pre Ubu ne devrait pas
vous tre inconnu, il s'agit de merdre.
Puis contrlez le contenu du certicat obtenu avec les options appropries de la commande x509.
Vrication de certicats On peut vrier la validit d'un certicat avec la commande verify. Pour
vrier la validit d'un certicat, il est ncessaire de disposer du certicat de l'autorit qui l'a mis.
$ o p e n s s l v e r i f y C A f i l e P e r e U b u C e r t i f . pem monCertif . pem
7
3.4 Signature et chirement de courriers lectroniques
Lorsque vous disposez d'une paire de cls publique/prive, et d'un certicat qui les accompagne, et
qui atteste de votre adresse lectronique, il vous est possible, entre autres choses, de signer vos mails, et
de recevoir des mails chirs de la part de vos correspondants qui disposent de votre certicat.
Il est bien videmment possible de rediriger la sortie de la comande prcdente vers un chier (avec
l'option -out par exemple), ou vers la commande mail.
Vrication de courriers signs Pour vrier un courrier sign, il faut disposer du certicat que
l'metteur a utilis pour signer, ainsi que celui de l'autorit ayant mis ce certicat. On invoque la
commande
$ o p e n s s l smime v e r i f y i n c o u r r i e r . s i g n e \
C A f i l e P e r e U b u C e r t i f . pem
Chirement de courriers Pour envoyer un courrier chir, par exemple avec du Triple-DES, un
destinataire dont on dispose d'un certicat sonCertif.pem, il sut d'invoquer la commande
$ o p e n s s l smime e n c r y p t i n b l a b l a . t x t t e x t \
from moi@palotin . p l \
t o haha@palotin . p l \
s u b j e c t " c o u r r i e r c h i f f r e " \
d e s 3 s o n C e r t i f . pem
Il est bien videmment possible de rediriger la sortie de la comande prcdente vers un chier (avec
l'option -out par exemple), ou vers la commande mail.
Remarque Lorsqu'on chire un courrier lectronique, il faut s'assurer que le destinataire est en mesure
de le dchirer, autrement dit que le logiciel du destinataire est en mesure de le faire.
8
La base de donnes de certicats Vous pouvez consulter cette base de donnes par le menu
Edition/Preferences.
Vous pouvez alors consulter
vos certicats (a priori aucun),
ceux des personnes dont vous en avez obtenu un,
ceux de serveurs WEB scuriss que vous avez eu l'occasion de rencontrer,
et enn, ceux des autorits de certication que vous connaissez (il y en a plusieurs dizaines nor-
malement, mais cette liste ne contient pas le Pre Ubu)
Importation d'un certicat Pour importer votre certicat dans votre base de donnes, il faut crer
d'abord une enveloppe PKCS#12. Il s'agit d'une norme de chier adopte pour "celer" ensemble un ou
plusieurs certicats et cls.
Pour crer une enveloppe PKCS#12 contenant votre certicat, votre cl prive, et le certicat de
l'autorit ayant sign le votre, il sut d'invoquer la commande
$ o p e n s s l pkcs12 e x p o r t i n monCertif . pem \
i n k e y maCle . pem c e r t f i l e P e r e U b u C e r t i f . pem \
name "EW" caname " Pere Ubu" out monEnveloppe . p12
Acceptation de l'autorit Pre Ubu ... l'autorit Pre Ubu n'est pas accepte par votre navigateur.
Pour que Pre Ubu soit accept vous devez diter son certicat (depuis la liste des certicats d'autorits
signataires) et cocher la case concernant l'acceptation de cette autorit pour les emails.
Vriez maintenant votre certicat.
Vriez aussi la signature du mail de mercredi dernier.
Envoyer un courrier sign Pour envoyer un courrier sign, il sut de cocher la cas adquate qui
apparat lorsqu'on coche la case scurit (en bas gauche) de la fentre de composition du mail.
Envoyer un mail chir Pour envoyer un courrier chir, il sut de faire la mme chose. ATTEN-
TION, vous devez possder un certicat valide de votre destinataire.