Open SSL

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 18

Protocole SSL

OpenSSL
Le p
protocole SSL ((Secure Socket Layer)
y ) a été développé
pp ppar la
société Netscape Communications Corporation pour permettre aux
applications client/serveur de communiquer de façon sécurisée.

TLS (Transport Layer Security) est une évolution de SSL réalisée


M.A.
M A EL KIRAM par l’IETF.
p

[email protected]

Pr. M.A. EL KIRAM 2

Protocole SSL Objectifs


j de SSL

SSL est un pprotocole q


qui s’intercale entre TCP/IP et les applications
pp „ Authentification du serveur Internet qui transmet les données
données.
qui s’appuient sur TCP. „ Confidentialité des informations échangées.
„ Intégrité des données échangées.
„ Authentification du client (optionnel).

Pr. M.A. EL KIRAM 3 Pr. M.A. EL KIRAM 4


Session SSL OpenSSL
p

Une session SSL se déroule en deux temps:

OpenSSL
p est un utilitaire cryptographique
yp g p q q qui implémente
p les
- Une phase de poignée de mains (handshake) durant laquelle le protocoles SSL et TLS ainsi que les standards cryptographiques liés
client et le serveur s’identifient, conviennent du système de dont ils ont besoin.
chiffrement et d’une clés qqu’ils utiliseront p
par la suite.

- Une phase de communication proprement dite durant laquelle les


d
données
é é échangées
h é sontt compressées,
é chiffrées
hiff é ett signées.
i é

Pr. M.A. EL KIRAM 5 Pr. M.A. EL KIRAM 6

OpenSSL
p Utilisation de openSSL
p

La boite à outils openSSL offre:


- Pour connaître toutes les fonctionnalités de openSSL:
p
„ Une bibliothèque de programmation en C permettant de réaliser des
applications client/serveur sécurisées sur SSL/TLS. $ man openssl
„ des commandes openSSL permettant:
‰ Création des paramètres des clés RSA, DH,DSA… - la syntaxe générale de la commande openssl:
‰ Création des certificats X.509.
‰ Calcul d’empreinte (MD5, SHA,…)
$ openssl commande [options] [arguments]
‰ Chiffrement et déchiffrement symétrique et asymétrique.
‰ Signature et chiffrement de courriers
courriers.

Pr. M.A. EL KIRAM 7 Pr. M.A. EL KIRAM 8


Chiffrement symétrique
y q

Le chiffrement et le déchiffrement symétrique avec openSSL se fait


avec la commande enc:

Chiff
Chiffrement symétrique
é i $ openssl enc [options] [arguments]

Parmi les options on doit indiquer le système de chiffrement


symétrique à choisir. La liste de ces systèmes est obtenu par:

$ man enc

Pr. M.A. EL KIRAM 10

Chiffrement symétrique
y q Chiffrement symétrique
y q

$ man enc $ man enc


…. ….
base64 Chiffrement Base64 cast-cbc CAST in CBC mode
cast alias for cast-cbc
bf-cnc
bf Blowfish
Bl fi h iin CBC mode
d cast5-cbc
t5 b CAST5 iin CBC mode d
bf alias for bf-cbc cast5-cfb CAST5 in CFB mode
bf-cfb Blowfish in CFB mode cast5-ecb CAST5 in ECB mode
bf-ecb Blowfish in ECB mode cast5-ofb CAST5 in OFB mode
bf-ofb Blowfish in OFB mode …

Pr. M.A. EL KIRAM 11 Pr. M.A. EL KIRAM 12


Chiffrement symétrique
y q Chiffrement symétrique
y q

$ man enc $ man enc


…. ….
des-cbc DES in CBC mode des-ede-cbc Two key triple DES EDE in CBC mode
des alias for des-cbc des-ede alias for des-ede
des-cfb DES in CFB mode d
des-ede-cfb
d fb T
Two key
k triple
t i l DES EDE in
i CFB mode
d
des-ofb DES in OFB mode des-ede-ofb Two key triple DES EDE in OFB mode
des-ecb
des ecb DES in ECB mode …

Pr. M.A. EL KIRAM 13 Pr. M.A. EL KIRAM 14

Chiffrement symétrique
y q Chiffrement symétrique
y q

$ man enc $ man enc


…. ….
aes-128-cbc des-ede3-cbc Three key triple DES EDE in CBC mode
aes-128-ebc des-ede3 alias for des-ede3-cbc
aes-192-cbc
192 b d 3
des3 alias
li ffor ddes-ede3-cbc
d 3 b
aes-192-ebc des-ede3-cfb Three key triple DES EDE in CFB mode
aes-256-cbc des-ede-ofb Three key y triple
p DES EDE in OFB mode
aes-256-ecb …

Pr. M.A. EL KIRAM 15 Pr. M.A. EL KIRAM 16


Chiffrement symétrique
y q Chiffrement symétrique
y q

$ man enc $ man enc


…. ….
desx DESX algorithm rc2-cbc 128 bits RC2 in CBC mode
rc2 alias for rc2-cbc
rc2-cfb 128 bits RC2 in CFB mode
idea-cbc
id b IDEA iin CBC mode
d
rc2-ecb 128 bits RC2 in ECB mode
idea alias idea-cbc rc2-ofb 128 bits RC2 in OFB mode
idea-cfb IDEA in CFB mode
idea-ecb IDEA in ECB mode rc2-64-cbc 64 bits RC2 in CBC mode
idea-ofb IDEA in OFB mode rc2-40-cbc 40 bits RC2 in CBC mode
… …

Pr. M.A. EL KIRAM 17 Pr. M.A. EL KIRAM 18

Chiffrement symétrique
y q Chiffrement symétrique
y q

$ man enc $ man enc


…. ….
rc4 128 bit RC4 rc5-cbc RC5 cipher in CBC mode
rc4-64 64 bit RC4 rc5 alias for rc5
rc4-40
4 40 40 bit RC4 rc5-cfb
5 fb RC5 cipher
i h iin CFB moded
… rc5-ecb RC5 cipher in ECB mode
rc5-ofb RC5 cipher
p in OFB mode

Pr. M.A. EL KIRAM 19 Pr. M.A. EL KIRAM 20


Chiffrement symétrique
y q Déchiffrement

Pour chiffrer le fichier test.txt avec le système Blowfish en mode


CBC, avec une clé générées par mot de passe, le chiffré étant Pour déchiffré le fichier chiffré:
stocké dans le fichier test.bf
test bf:
$ openssl enc -bf-cbc -d -in test.bf -out test
$ openssl enc -bf-cbc -in test.txt -out test.bf ou
ou
$ openssl bf-cbc -d -in test.bf -out test
$ openssl bf-cbc -in test.txt -out test.bf

Vérification:
$ diff test.txt test.bf

Pr. M.A. EL KIRAM 21 Pr. M.A. EL KIRAM 22

Ateliers Ateliers
At1: At1:
At1
4.c. Chiffrer le fichier de essai.txt en système triple DES en CBC
1.c. Chiffrer le fichier essai.txt en système Blowfish en CBC mode mode dans essai.des3.
dans essai.bf.
essai bf 4.d. Déchiffrer le fichier essai.des3.
1.d. Déchiffrer le fichier essai.bf

2.c.
2 c Chiffrer le fichier de essai.txt
essai txt en système DES en CBC mode 5.c. Chiffrer le fichier de essai.txt en système
y AES 192 bits en
dans essai.des. CBC mode dans essai.aes192.
2.d. Déchiffrer le fichier essai.des. 5.d. Déchiffrer le fichier essai.aes192.

3.c. Chiffrer le fichier de essai.txt en système double DES EDE en


CBC mode dans essai.des-ede.
3.d. Déchiffrer le fichier essai.des-ede.

Pr. M.A. EL KIRAM 23 Pr. M.A. EL KIRAM 24


Ateliers Ateliers
At2:
At2 At3
At3:
Le fichier cryptogram1 a été chiffré avec le système Blowfish en
1. Chiffrer le fichier essai.txt en système DES en CBC mode mode CBC, la clé ayant été obtenu par mot de passe.
dans essai1.des.
Q1: Le mot de passe codé en base 64 est d2Vncnp5bm8=
2. Chiffrer le fichier essai.txt en système
y DES en CBC mode
dans essai2.des avec la même clé (ie. même mot de passe). A l’l’aide
id dde lla commande
d openssll approprié,
ié dé
décoder
d lle mott d
de
passe.
3. Co
3 Comparez
pa e essai1.des
essa des eet essa
essai2.des.
des Que co
constatez
s a e vous?
ous
Q2: Déchiffré ensuite le cryptogram1.
4. En déduire le rôle du salt.

Pr. M.A. EL KIRAM 25 Pr. M.A. EL KIRAM 26

Génération d’une p
paire de clés

On peut générer une paire de clés RSA avec la commande genrsa


de openssl:
p
Chiff
Chiffrement asymétrique
é i RSA
$ openssl genrsa -out <fichier> <taille>

fichier : le nom du fichier de sauvegarde de la clé.


taille : la taille souhaitée en bits du modulo de la clé.

Pr. M.A. EL KIRAM 28


Génération d’une p
paire de clés Visualisation des clés RSA

La commande rsa permet de visualiser le contenu d’un fichier au


Exemple: format PEM contenant une paire de clés RSA:

$ openssl genrsa -out mesCles.pem 1024


$ openssl rsa -in <fichier> -text -noout

Le fichier obtenu est un fichier au format PEM (Privacy Enhanced


-text : demande l’affichage décodé de la clé.
Mail).
-noout : supprime la sortie normalement produite par rsa

Pr. M.A. EL KIRAM 29 Pr. M.A. EL KIRAM 30

Visualisation des clés RSA Chiffrement des clés RSA

Exemple:
Il n’est pas prudent de laisser une paire de clés en clair.
$ openssl rsa -in mesCles.pem -text -noout
Avec la commande rsa, il est possible de chiffrer une paire de clés.
Trois systèmes de chiffrement sont possible: des, des3 et idea.
Les différents éléments de la clé sont affichés en hexadécimal
((hormis l’exposant
p p
publique).
q ) On p peut distinguer:
g $ openssl rsa -in
in mesCles.pem
mesCles pem -des3
des3 -out
out mesCles.pem
mesCles pem
- le modulo.
- l’exposant public. Une phrase de passe est demandée pour générer une clé
- l’exposant
l’ privé.
i é symétrique.
ét i
- les nombres premiers facteurs du modulus.
- trois autres nombres d’optimisation
d optimisation de l’algorithme.
l algorithme. Q: Voir maintenant le fichier mesCles.pem
p
Q: Déterminer ces informations dans votre fichier de clés.

Pr. M.A. EL KIRAM 31 Pr. M.A. EL KIRAM 32


Exportation
p de la clé p
publique
q Chiffrement avec RSA

Le chiffrement
L hiff d
de d
données
é avec RSA se ffait
i avec lla commande
d
Le fichier mesCles.pem contient la partie publique et la partie privée rsautl:
d’une ppaire de clés RSA et ne p
peut donc être communiquéq tel q quel
même s’il est chiffré. $ openssl rsautl -encrypt -in <fichier-in> -inkey <cle> -out <fichier-
Avec –pubout on peut exporter la partie publique d’une clé: out> -pubin

$ openssl rsa -in mesCles.pem -pubout -out maclepub.pem -pubin est utilisée si le fichier de la clé ne contient que la partie
publique.
Q: Voir maintenant le fichier maclepub.pem

Pr. M.A. EL KIRAM 33 Pr. M.A. EL KIRAM 34

Chiffrement avec RSA Déchiffrement avec RSA

Exemple:
Pour déchiffrer,, on remplace
p l’option
p yp p
–encrypt par –decrypt
yp .
$ openssl rsautl -encrypt -in essai.txt -inkey SaClepub.pem
-out essai.chi -pubin Le fichier contenant la clé doit obligatoirement contenir la clé privé.

Pr. M.A. EL KIRAM 35 Pr. M.A. EL KIRAM 36


Signature
g de fichier Signature
g de fichier

Il n’est possible de signer que de petits documents.


Signer
g un document revient à signer
g son empreinte.
p Pour cela on
Pour signer un gros document, on calcul d’abord une empreinte de utilise l’option –sign de la commande rsautl:
ce document avec la commande dgst:
$ openssl rsautl -sign -in <empreinte> -inkey <cle> -out
$ openssl dgst <hachage> -out <empreinte> <fichier-in> <signature>

où hachage est une fonction de hachage tel que: Il reste ensuite à vérifier que l’empreinte ainsi produite est la même
que celle que l’on peut calculer.
MD5 : sur 128 bits.
SHA1 : sur 160 bits.
RIPEMD160 : sur 160 bits.

Pr. M.A. EL KIRAM 37 Pr. M.A. EL KIRAM 38

Certificats Créations des fichiers nécessaires à


OpenSSL

# cd /usr/local/ssl

# mkdir crl contiendra les liste de révocations;


# mkdir certs //si inexisant contiendra les certificats signés
# mkdir
kdi ca ca contiendra
ti d lal paire
i de
d clés
lé ett lle certificat
tifi t de
d l‘AC
# mkdir csr csr contiendra les requêtes de certificats
# mkdir newcerts contiendra les certificats signés
# mkdir cnf contiendra les fichiers de configuration
# mkdir private contiendra les paires de clés publiques/privées

Pr. M.A. EL KIRAM 39 Pr. M.A. EL KIRAM 40


Créations des fichiers nécessaires à Création du fichier aléatoire
OpenSSL
Lors de la génération de paire de clés, OpenSSL a besoin d’un fichier
# chmod 700 private
aléatoire afin d’alimenter son générateur de nombres pseud-aléatoire.

# echo "01" > serial


le fichier serial contiendra le numéro de série du prochain certificat à signer

# cp /dev/null index.txt
le fichier index.txt contiendra la « base de données » de l'autorité de
certification gérée par OpenSSL;

Pr. M.A. EL KIRAM 41 Pr. M.A. EL KIRAM 42

Création du fichier aléatoire Modification du fichier de configuration


g
de OpenSSL
Édit dans
Éditer d /usr/local/ssl
/ /l l/ l le
l fichier
fi hi openssl.cnf
l f
Création du fichier aléatoire « .rand »
#cd /usr/local/ssl Modifier ensuite les champs:
# dd if=/dev/urandom of=private/.rand bs=1k count=16
16+0 enregistrements lus. ./demoCA par /usr/local/ssl
16+0 enregistrements écrits
écrits. cacert.pem
t par ca/ca.crt
/ t
16384 bytes transferred in 0,026151 seconds (626513 bytes/sec) crl.pem par ca/ca.crl
cakey.pem par ca/ca.key
Explication :
La valeur count=16 donne un fichier .rand de 16x1k (countxbs), soit 16 ko. De façon à obtenir:

Pr. M.A. EL KIRAM 43 Pr. M.A. EL KIRAM 44


####################################################################
[ CA_default ]
dir = /usr/local/ssl # Where everything is kept
Création des fichiers de configuration
g pour
p
certs
kept
= $dir/certs # Where the issued certs are
la création des certificats
_
crl_dir = $dir/crl # Where the issued crl are kept p
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation
of a) Fichier de configuration de Root CA
# several ctificates with same
subject.
new_certs_dir = $dir/newcerts # default place for new certs. Dans /etc/ssl/cnf créer un nouveau fichier root-ca-cert.cnf:
certificate = $dir/ca/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
#crlnumber = $dir/crlnumber # the current crl number must be #cd /usr/local/ssl/cnf
# commented out to leave a V1
CRL
crl = $dir/ca/ca.crl # The current CRL #touch root-ca-cert.cnf
private_key = $dir/ca/ca.key # The private key
RANDFILE = $dir/private/.rand # private random number file
L'éditer afin de lui intégrer le texte de l'annexe 1.
Ce fichier servira à la création du certificat de l'autorité de
Les caractères en gras ci dessus correspondent aux modifications apportées. certification.

Pr. M.A. EL KIRAM 45 Pr. M.A. EL KIRAM 46

Création des fichiers de configuration


g pour
p Création des fichiers de configuration
g pour
p
la création des certificats la création des certificats
b) Fichier de configuration des serveurs
b) Fichier de configuration des serveurs

De la même façon que précédemment:


On entend ici par serveurs les serveurs de type web par exemple c'est à
#cd /etc/ssl/cnf
dire proposant des services qui requièrent l'utilisation de certificat ou encore
des serveurs d'authentification tel que le serveur LDAP, Kerberos, Radius #touch req-server-cert.cnf
reposant aussi sur l'utilisation de certificats.
L'éditer afin de lui intégrer le texte de l'annexe 2.
Ce fichier servira à la création du certificat du serveur (web par exemple).

Pr. M.A. EL KIRAM 47 Pr. M.A. EL KIRAM 48


Création des fichiers de configuration
g pour
p Création des fichiers de configuration
g pour
p
la création des certificats la création des certificats
b) Fichier de configuration des serveurs c) Fichier de configuration des utilisateurs

De la même façon que précédemment: Comme dans le paragraphe précédent et toujours dans /usr/local/ssl/cnf:
#cd /etc/ssl/cnf
#touch req-server-cert.cnf
req server cert cnf #touch req-user-cert.cnf
req user cert cnf
L'éditer afin de lui intégrer le texte de l'annexe 4.
L'éditer afin de lui intégrer le texte de l'annexe 2.
Ce fichier servira à la création du certificat du serveur (web par exemple). #touch ca-user-cert.cnf
Puis: L'éditer afin de lui intégrer le texte de l'annexe 5.
#touch caca-server-cert.cnf
server cert.cnf
Ce fichier permettra la signature du certificat par l'autorité de certification
(Root CA). L'éditer afin de lui intégrer le texte de l'annexe 3.

Pr. M.A. EL KIRAM 49 Pr. M.A. EL KIRAM 50

Création des certificats


Se placer dans /usr/local/ssl
#cd /etc/ssl

1. C
1 Certificat
tifi t Root
R t CA Le mot de passe qui a été choisi est: rootca
# openssl genrsa -des3 -out ca/ca.key -rand private/.rand 4096
a) Génération d'une paire de clés 16384 semi-random bytes loaded
Generating g RSA private
p key,y, 4096 bit long g modulus
Tout d'abord, il faut générer la paire de clés privée / publique RSA avec la ..................................................................
commande genrsa. ................+
..................................................................
.....................++
++
e is 65537 (0x10001)
Enter pass phrase for ca/ca.key: Root CA
y g - Enter p
Verifying pass phrase
p for ca/ca.key: y Root CA

Le paramètre -des3 indique que la paire de clés sera chiffrée avec l'algorithme
DES3. Le paramètre -out précise le nom du fichier de la paire de clés. Le paramètre
- rand p
pointe sur un fichier aléatoire. Le dernier p
paramètre doit être la longueur
g de la
paire de clés en nombre de bits.

Il est conseillé de mettre les droits de « ca.key » à 400 n'autorisant ainsi que la lecture de cette paire de
clés,, et uniquement
q p
par l'administrateur root.

Pr. M.A. EL KIRAM 51 Pr. M.A. EL KIRAM 52


Création des certificats #openssl req -new -x509 -days 124 -config
key ca/ca.key -out ca/ca.crt
Enter pass phrase for ca/ca.key:Root CA
cnf/root-cacert.cnf -

You are about to be asked to enter information that will be incorporated


into your certificate request.
1. C
1 Certificat
tifi t Root
R t CA What you are about to enter is what is called a Distinguished Name or a DN
DN.
There are quite a few fields but you can leave some blank
a) Génération d'une paire de clés For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name * (2 letter code) [MA]:MA
b) Génération et signature du certificat Root CA State or Province Name * (full name) [Province]:Tensift
Ensuite il faut générer et signer le certificat Root CA avec la commande req Locality Name * (eg,(eg city) [City]:Marrakech
Organization Name * (eg, company) [Company]:UCAM
Organizational Unit Name (eg, section) []:FSSM
Common Name * (eg, Root CA name) []:Root_CA_Name

Le paramètre –new combiné avec -x509 signifie qu'un certificat X.509


autosigné va être généré (et non une requête). Le paramètre –days
indique le nombre de jours de validité du certificat
certificat. Le paramètre -
config précise le nom du fichier de configuration à utiliser, le paramètre
–key pointe sur la paire de clés RSA précédement générée. Enfin, le
paramètre –out précise le nom du fichier certificat :

Pr. M.A. EL KIRAM 53 Pr. M.A. EL KIRAM 54

Création de certificats Création de certificats

Pour afficher le certificat : 2. Certificat Serveur


a)) Gé
Génération
é ti d' d'une paire
i ded clés

# openssl x509 -in ca/ca.crt -text -noout De la même façon que pour le certificat Root CA, on génère une paire de
clés privée/publique.

De plus, afin d'organiser de façon concise l'arborescence, il semble être


jjudicieux de créer un dossier q qui pportera le nom du serveur p
pour lequel
q on
veut créer le certificat serveur (ici serveurssl) :

Pr. M.A. EL KIRAM 55 Pr. M.A. EL KIRAM 56


#cd /etc/ssl

#mkdir serverssl

#
#openssl l genrsa -des3 d 3 -outt serverssl/serverssl.key
l/ lk -rand
d
private/.rand 1024
16384 semi-random bytes loaded
G
Generating ti RSA private i t key, k 1024 bit llong modulus
d l
Cela se p
passe maintenant en 2 temps.
p Tout d'abord,, il y
...........................................++++++ a génération d'une requête de certificat puis la
.......++++++ signature peut s'effectuer.
e is 65537 (0x10001)
Enter pass phrase for serverssl/serverssl.key:Serveur SSL
Verifying - Enter pass phrase for ../serverssl/serverssl.key:Serveur SSL

Ensuite
#chmod 400 y
serverssl/serverssl.key

Pr. M.A. EL KIRAM 57 Pr. M.A. EL KIRAM 58

Certificat serveur
#openssl req -new -config cnf/req-server-cert.cnf -key
serverssl/serverssl.key -out serverssl/serverssl.csr
E t pass phrase
Enter h for
f ../serverssl/serverssl.key:Serveur
/ l/ lk S SSL
You are about to be asked to enter information that will be incorporated
into your certificate request.
What yyou are about to enter is what is called a Distinguished
g Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,If you enter '.', the field will be left blank.--
---
A- Génération d’une requête
q de certificat serveur Country Name * (2 letter code) [MA]:
On effectue une requête de certificat serveur avec la commande req: State or Province Name (full name) [Province]:Tensift
Locality Name (eg, city) [City]:Marralech
Organization Name * (eg, company) [Company]:UCAM
Organizational Unit Name (eg, section) [Section]:FSSM
Common Name * (eg, www.ucam.ac.ma) []:common-name
E-mail Address []:[email protected]

Le paramètre -new permet de générer une nouvelle requête. Et, le


paramètre –config précise le nom du fichier de configuration à utiliser.
Le paramètre –key pointe sur la paire de clés RSA précédemment
générée.
é éé L Le paramètre
èt –outt précise
é i lle nom d du fifichier
hi d de lla requête.
êt

Pr. M.A. EL KIRAM 59 Pr. M.A. EL KIRAM 60


Certificat serveur
# openssl ca -config cnf/ca-server-cert.cnf -days 730 –in serverssl/serverssl.csr
-out serverssl/serverssl.crt –notext
Using configuration from cnf/ca
cnf/ca-server-cert
server cert.cnf
cnf
Enter pass phrase for /etc/ssl/ca/ca.key:
Check that the request matches the signature
Signature ok
The Subject
Subject'ss Distinguished Name is as follows
countryName :PRINTABLE:'MA'
stateOrProvinceName :PRINTABLE:'Tensift'
B - Signature par le certificat Root CA localityName :PRINTABLE:'Marrakech'
organizationName :PRINTABLE:'UCAM'
:PRINTABLE: UCAM
organizationalUnitName:PRINTABLE:'FSSM'
commonName :PRINTABLE:'common-name'
Puis il faut signer la requête de certificat Serveur avec la commande ca emailAddress :IA5STRING:'[email protected]'
Certificate is to be certified until Jan 13 17:25:23 2008 GMT (730 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated.
Updated

Le paramètre -config précise le nom du fichier de configuration à utiliser. Le


paramètre –days indique le nombre de jours de validité du certificat. Le paramètre –
in pointe sur la requête précédemment générée. Le paramètre –out out précise le nom
du fichier qui contiendra le certificat signé. De plus, le paramètre –notext fait en sorte
que le fichier désigné par le paramètre –out ne contienne pas de version texte du
certificat: ce fichier ne contiendra que le certificat au format PEM (Base64) :

Pr. M.A. EL KIRAM 61 Pr. M.A. EL KIRAM 62

Certificat utilisateur
#openssl genrsa -des3 -out private/kiram.key -rand private/.rand
1024
16384 semi-random bytes loaded
a) Génération d'une paire de clés privée / publique Generating RSA private key, 1024 bit long modulus
.++++++
++++++
De la même façon que pour le serveur ou l'autorité de certification, il est .............................................++++++
nécessaire de générer la paire de clés. Pour cela: e is 65537 (0x10001)
Enter pass phrase for ../private/kiram.key:kiram
Verifying - Enter pass phrase for private/kiram.key:kiram

Pr. M.A. EL KIRAM 63 Pr. M.A. EL KIRAM 64


Certificat utilisateur
#openssl req -new -config cnf/req-user-cert.cnf -key private/ahmed.key -out
csr/ahmed.csr
Enter pass phrase for private/ahmed.key:ahmed
You are about to be asked to enter information that will be
Incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
b) Génération d'une requête de certificat Utilisateur
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
Nous allons maintenant générer la requête de certificat Utilisateur : If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:MA
State or Province Name (full name) []:Tensift
Locality Name (eg, city) []:Marrakech
Organization Name (eg, company) []:UCAM
Organizational Unit Name (eg, section) []:FSSM
Common Name * (eg, your name) []:ahmed kiram
E-Mail Address * []:[email protected]

Pr. M.A. EL KIRAM 65 Pr. M.A. EL KIRAM 66

#openssl ca -config cnf/ca-user-cert.cnf -days 124 -in csr/ahmed.csr -


Certificat utilisateur out certs/ahmed.crt –notext
U i configuration
Using fi ti ffrom cnf/ca-user-cert.cnf
f/ t f
Enter pass phrase for /etc/ssl/ca/ca.key:
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
c)) Signature
g d'un certificat Utilisateur countryName :PRINTABLE:MA
Nous allons maintenant faire signer le certificat par le Root CA: stateOrProvinceName :PRINTABLE:Tensift
localityName :PRINTABLE:Marrakech
organizationName :PRINTABLE:UCAM
organizationalUnitName:PRINTABLE:FSSM
commonName :PRINTABLE:ahmed kiram
@
emailAddress :IA5STRING:[email protected]
Certificate is to be certified until May 18 11:34:46 2008 GMT (124
days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write ou database with 1 new entries Data Base Updated

Pr. M.A. EL KIRAM 67 Pr. M.A. EL KIRAM 68


Conversion d’un certificat utilisateur Conversion d’un certificat utilisateur

Lorsque la paire de clés et le certificat sont générés par la PKI, il est très La commande ci-dessous fait la conversion du certificat au format p12 :
pratique de retourner toutes ces données à l'utilisateur au moyen du format #openssl pkcs12 -export -descert -inkey private/kiram.key -in
PKCS#12, car ce dernier est reconnu par de très nombreux clients web et certs/kiram.crt -name "ahmed_friendlyname" -certfile
de messagerie. ca/ca.crt -caname "rootca_friendly_name" -out certs/kiram.p12
Enter ppass p
phrase for p
private/ahmed.key:kiram
y
Enter Export Password:kiramexport
Verifying - Enter Export Password:kiramexport

Pr. M.A. EL KIRAM 69 Pr. M.A. EL KIRAM 70

Simulation Simulation

Simulation d'un serveur SSL/TLS Simulation d'un client SSL/TLS

#openssl s_server -accept 4433 -no_ssl2 -no_dhe -cert #openssl s_client -connect 127.0.0.1:4433 -msg -cert
serverssl/serverssl.crt -key serverssl/serverssl.key certs/ahmed.crt -key private/ahmed.key
-CAfile ca/ca.crt -msg -WWW -Verify 1 Enter PEM pass phrase:kiram
verify depth is 1, must return a certificate
Enter PEM pass phrase:Serveur SSL

Pr. M.A. EL KIRAM 71 Pr. M.A. EL KIRAM 72

Vous aimerez peut-être aussi