14
TP de mise en oeuvre d’une PKI avec Openssl

TP de mise en oeuvre d’une PKI avec Openssl

  • Upload
    nasia

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

TP de mise en oeuvre d’une PKI avec Openssl. But du TP. Créer une infrastrucure à clefs publiques (PKI) permettant de générer des certificats serveur et client Nous allons de plus créer une autorité fille intermédiaire qui signera tout les certificats - PowerPoint PPT Presentation

Citation preview

Page 1: TP de mise en oeuvre d’une PKI avec Openssl

TP de mise en oeuvre d’une PKI

avec Openssl

Page 2: TP de mise en oeuvre d’une PKI avec Openssl

• Créer une infrastrucure à clefs publiques(PKI) permettant de générer des certificatsserveur et client

• Nous allons de plus créer une autorité filleintermédiaire qui signera tout les certificatset pourra être remplacé si un pirate vole saclef privée, car l’autorité racine sera, elle, ensureté.

• Créer une infrastrucure à clefs publiques(PKI) permettant de générer des certificatsserveur et client

• Nous allons de plus créer une autorité filleintermédiaire qui signera tout les certificatset pourra être remplacé si un pirate vole saclef privée, car l’autorité racine sera, elle, ensureté.

But du TPBut du TP

Page 3: TP de mise en oeuvre d’une PKI avec Openssl

SchémaSchéma

On commence par créerun certificat racine

CA RootClef pub:001101001100110001110101

AutosignéCA Root

On créé ensuite uneautorité fille

CAsslClef pub:001101001010010001110101

Signée par la CA

CA Root

Page 4: TP de mise en oeuvre d’une PKI avec Openssl

SchémaSchéma

On créé ensuite une demandecertificat serveur

CA RootClef pub:001101001100110001110101

Que l’on va signer avecl’autorité fille

CA Root

On refait les mêmes opérations pour le certificat

client

CAsslClef pub:001101001010010001110101CA Root

Cert ServerClef pub:001101001010010001110101

CAssl

Cert ClientClef pub:001101001010010001110101

CAssl

Page 5: TP de mise en oeuvre d’une PKI avec Openssl

• Sur le site:http://www.hsc.fr/ressources/breves/ssl_configuration.html.fr

• Aller dans les annexes et copier le contenudu fichier openssl.cnf

• Coller ce contenu dans un fichier openssl.cnfque vous pouvez créer n’importe où

• Vous pouvez changer les valeurs de[ req_distinguished_name ] dans ce fichier

• Sur le site:http://www.hsc.fr/ressources/breves/ssl_configuration.html.fr

• Aller dans les annexes et copier le contenudu fichier openssl.cnf

• Coller ce contenu dans un fichier openssl.cnfque vous pouvez créer n’importe où

• Vous pouvez changer les valeurs de[ req_distinguished_name ] dans ce fichier

Création du fichier openssl.cnfCréation du fichier openssl.cnf

Page 6: TP de mise en oeuvre d’une PKI avec Openssl

• Créez un répertoire pour votre PKI, parexemple:# mkdir /tp_pki

• Copiez openssl.cnf dans ce répertoire

• Allez dans ce répertoire

• Créez un répertoire pour votre PKI, parexemple:# mkdir /tp_pki

• Copiez openssl.cnf dans ce répertoire

• Allez dans ce répertoire

Création des répertoiresCréation des répertoires

Page 7: TP de mise en oeuvre d’une PKI avec Openssl

• Créez les répertoires et fichiers nécessairesau bon fonctionnement

On crée les fichiers et répertoires nécessaires :$ mkdir -p ca/newcerts # Répertoire recueillant les certificats

# émis par CA ROOT$ touch ca/index.txt # Base de données des certificats émis$ echo '01' > ca/serial # Numéro de série, initialisé à 1.

# Incrémenté par la suite

$ mkdir -p cassl/newcerts #idem, pour CA SSL$ touch cassl/index.txt$ echo '01' > cassl/serial

• Créez les répertoires et fichiers nécessairesau bon fonctionnement

On crée les fichiers et répertoires nécessaires :$ mkdir -p ca/newcerts # Répertoire recueillant les certificats

# émis par CA ROOT$ touch ca/index.txt # Base de données des certificats émis$ echo '01' > ca/serial # Numéro de série, initialisé à 1.

# Incrémenté par la suite

$ mkdir -p cassl/newcerts #idem, pour CA SSL$ touch cassl/index.txt$ echo '01' > cassl/serial

Création des répertoires (2)Création des répertoires (2)

Page 8: TP de mise en oeuvre d’une PKI avec Openssl

Création du certificat CACréation du certificat CA

• On crée un couple de clefs (publique/privée)$ openssl genrsa -out ca/ca.key -des3 2048

• On crée ensuite un certificat qui va êtresigné (validé) par lui-même, car il est le certificat racine# openssl req -new -x509 -key ca/ca.key -out ca/ca.pem -config ./openssl.cnf -extensions CA_ROOT

• Vous devriez donc avoir ce certificat autosigné dans le répertoire ca, nommé ca.pem

• On crée un couple de clefs (publique/privée)$ openssl genrsa -out ca/ca.key -des3 2048

• On crée ensuite un certificat qui va êtresigné (validé) par lui-même, car il est le certificat racine# openssl req -new -x509 -key ca/ca.key -out ca/ca.pem -config ./openssl.cnf -extensions CA_ROOT

• Vous devriez donc avoir ce certificat autosigné dans le répertoire ca, nommé ca.pem

Page 9: TP de mise en oeuvre d’une PKI avec Openssl

Vérification du certificat CAVérification du certificat CA

• Le certificat est au format .pem et n’est doncpas directement lisible sous unix. Pour cela, il y a une commande openssl :$ openssl x509 -in ca/ca.pem -text -noout

• Le certificat est au format .pem et n’est doncpas directement lisible sous unix. Pour cela, il y a une commande openssl :$ openssl x509 -in ca/ca.pem -text -noout

Page 10: TP de mise en oeuvre d’une PKI avec Openssl

Création du certificat CAssl (fille)Création du certificat CAssl (fille)

• On crée un couple de clefs (publique/privée)$ openssl genrsa -out cassl/cassl.key -des3 2048

• On crée ensuite un certificat non signé (.crscertificate signing request) ATTENTION de bienutiliser les mêmes valeurs de pays, ville, etc.Seuls les name et email changent# openssl req -new -key cassl/cassl.key -out cassl/cassl.crs -config ./openssl.cnf

• Et on le signe avec la clef privée del’autorité, la CA.# openssl ca -out cassl/cassl.pem -config ./openssl.cnf -extensionsCA_SSL -infiles cassl/cassl.crs

• On crée un couple de clefs (publique/privée)$ openssl genrsa -out cassl/cassl.key -des3 2048

• On crée ensuite un certificat non signé (.crscertificate signing request) ATTENTION de bienutiliser les mêmes valeurs de pays, ville, etc.Seuls les name et email changent# openssl req -new -key cassl/cassl.key -out cassl/cassl.crs -config ./openssl.cnf

• Et on le signe avec la clef privée del’autorité, la CA.# openssl ca -out cassl/cassl.pem -config ./openssl.cnf -extensionsCA_SSL -infiles cassl/cassl.crs

Page 11: TP de mise en oeuvre d’une PKI avec Openssl

Création du certificat CAssl (fille)Création du certificat CAssl (fille)

• Il en ressort un beau certificat signé cassl.pema vérifier !!!$ openssl x509 -in cassl/cassl.pem -text -noout

• Le fichier cassl.pem a été créé car on l’a explicitement demandé -out cassl/cassl.pem

• Sinon, un fichier identique a été créé dansca/newcerts/01.pem

• Il en ressort un beau certificat signé cassl.pema vérifier !!!$ openssl x509 -in cassl/cassl.pem -text -noout

• Le fichier cassl.pem a été créé car on l’a explicitement demandé -out cassl/cassl.pem

• Sinon, un fichier identique a été créé dansca/newcerts/01.pem

Page 12: TP de mise en oeuvre d’une PKI avec Openssl

Création du certificat serveurCréation du certificat serveur

• On crée un couple de clefs (publique/privée)# openssl genrsa -out cassl/serverssl.key -des3 1024

• On crée ensuite un certificat non signé# openssl req -new -key cassl/serverssl.key -out cassl/serverssl.crs -config ./openssl.cnf

• Que l’on signe avec l’autorité fille (cassl.pem) # openssl ca -out cassl/serverssl.pem -name CA_ssl_default -config ./openssl.cnf -extensions SERVER_RSA_SSL -infiles cassl/serverssl.crs

• Attention, j’ai ajouté ici -out cassl/serverssl.pem pour créer explicitement le certificatserverssl.pem qui est en fait une copie decassl/newcerts/01.pem

• On crée un couple de clefs (publique/privée)# openssl genrsa -out cassl/serverssl.key -des3 1024

• On crée ensuite un certificat non signé# openssl req -new -key cassl/serverssl.key -out cassl/serverssl.crs -config ./openssl.cnf

• Que l’on signe avec l’autorité fille (cassl.pem) # openssl ca -out cassl/serverssl.pem -name CA_ssl_default -config ./openssl.cnf -extensions SERVER_RSA_SSL -infiles cassl/serverssl.crs

• Attention, j’ai ajouté ici -out cassl/serverssl.pem pour créer explicitement le certificatserverssl.pem qui est en fait une copie decassl/newcerts/01.pem

Page 13: TP de mise en oeuvre d’une PKI avec Openssl

Création du certificat clientCréation du certificat client

• On crée un couple de clefs (publique/privée)# openssl genrsa -out cassl/serverssl.key -des3 1024

• On refait les même commandes que pourle certificat serveur, en remplaçant par “client”# openssl req -new -key cassl/clientssl.key -out cassl/clientssl.crs -config ./openssl.cnf

# openssl ca -out cassl/clientssl.pem -name CA_ssl_default -config ./openssl.cnf -extensions CLIENT_RSA_SSL -infiles cassl/clientssl.crs

• On crée un couple de clefs (publique/privée)# openssl genrsa -out cassl/serverssl.key -des3 1024

• On refait les même commandes que pourle certificat serveur, en remplaçant par “client”# openssl req -new -key cassl/clientssl.key -out cassl/clientssl.crs -config ./openssl.cnf

# openssl ca -out cassl/clientssl.pem -name CA_ssl_default -config ./openssl.cnf -extensions CLIENT_RSA_SSL -infiles cassl/clientssl.crs

Page 14: TP de mise en oeuvre d’une PKI avec Openssl

Exportation du certificat clientExportation du certificat client

• On transforme le .pem en .p12 qui est unformat exécutable sous windows ou linuxpour mettre en place facilement le certificat$ openssl pkcs12 -export -inkey cassl/clientssl.key -in cassl/clientssl.pem -out clientssl.p12 -name "Certificat client"

• Et hop ! vous pouvez maintenant en créerautant que vous voulez en réitérant cette démarche, avec les bonnes options

• Vous pouvez aussi créer un script qui automatise toute cette démarche

• On transforme le .pem en .p12 qui est unformat exécutable sous windows ou linuxpour mettre en place facilement le certificat$ openssl pkcs12 -export -inkey cassl/clientssl.key -in cassl/clientssl.pem -out clientssl.p12 -name "Certificat client"

• Et hop ! vous pouvez maintenant en créerautant que vous voulez en réitérant cette démarche, avec les bonnes options

• Vous pouvez aussi créer un script qui automatise toute cette démarche