Outils pour utilisateurs

Outils du site


certif:pki

Ceci est une ancienne révision du document !


Création d'une Public Key Infrastructure (PKI)

Dans le script suivant, je crée un certificat root auto signé, un certificat serveur et un certificat client, le tout avec l'architecture nécéssaire a une pki sous debian 9 par defaut.

| Script
#!/bin/bash
 
# Choix du domaine qui servira de racine
domaine=test.draak.fr
 
# Nombre de jour de validité
nbjour=365
 
#Les informations standard pour la génération des certificats
country=FR
state=BZH
location=BZH
organisation=BARBED
organisationunit=IT
commonname=$domaine
 
# Nom du de l'utilisateur pour la creation du client
clientname=Draak
 
# On se déplace dans le dossier qui va accueillir notre petite PKI
cd /etc/ssl
 
# Création du dossier et on s'y déplace
mkdir $domaine
cd $domaine
 
# Création des dossier et fichier nécéssaire a la PKI
mkdir -p demoCA/newcerts
mkdir -p demoCA/certs
mkdir -p demoCA/crl
touch demoCA/index.txt
touch demoCA/index.txtattr
 
 
 
# Génération du certificat racine
echo "#-----Certificat Racine-----------------------------------------------#"
openssl req -x509 -new -nodes -newkey rsa:4096 -keyout rootCA.$domaine.key -sha256 -days $nbjour -out rootCA.$domaine.pem -config /etc/ssl/openssl.cnf -subj "/C=$country/ST=$state/L=$state/O=$organisation/OU=$organisationunit/CN=$commonname"
 
 
# Génération du certificat serveur
echo "#-----Certifcat Serveur-----------------------------------------------#"
# On commence par générer une clef
openssl genrsa -out server.$domaine.key 4096
# Maintenant le Certificate Signing Request (CSR)
openssl req -new -key server.$domaine.key -out server.$domaine.csr -config /etc/ssl/openssl.cnf -subj "/C=$country/ST=$state/L=$state/O=$organisation/OU=$organisationunit/CN=$commonname" 
# Et maintenant le certificat signé par le certificate authority
openssl x509 -req -in server.$domaine.csr -CA rootCA.$domaine.pem -CAkey rootCA.$domaine.key -CAcreateserial -out server.$domaine.pem -days $nbjour -sha256
 
 
 
# Génération du certificat client
echo "#-----Certifcat Client-----------------------------------------------#"
# On commence par générer une clef puis le CSR
openssl genrsa -out client.$domaine.key 4096
openssl req -new -key client.$domaine.key -out client.$domaine.csr -config /etc/ssl/openssl.cnf -subj "/C=$country/ST=$state/L=$state/O=$organisation/OU=$organisationunit/CN=$clientname" 
# Le certificat signé par le CA encore une fois
openssl ca -create_serial -out client.$domaine.pem -days $nbjour -keyfile rootCA.$domaine.key -cert rootCA.$domaine.pem -config /etc/ssl/openssl.cnf -infiles client.$domaine.csr 
# Export de la clef et du certif dans un package qui vous demandera un mot de passe a la génération. C'est ce dernier qui sera exporté.
openssl pkcs12 -export -in client.$domaine.pem -inkey client.$domaine.key -out client.$domaine.p12 -name $clientname

Voici a quoi devrait ressembler le résultat.

root@test.tld:/etc/ssl/test.draak.fr# tree
.
├── client.test.draak.fr.csr
├── client.test.draak.fr.key
├── client.test.draak.fr.p12
├── client.test.draak.fr.pem
├── demoCA
│   ├── certs
│   ├── crl
│   ├── index.txt
│   ├── index.txtattr
│   ├── index.txt.attr
│   ├── index.txt.old
│   ├── newcerts
│   │   └── BBA6422D56C83269.pem
│   └── serial
├── rootCA.srl
├── rootCA.test.draak.fr.key
├── rootCA.test.draak.fr.pem
├── server.test.draak.fr.csr
├── server.test.draak.fr.key
└── server.test.draak.fr.pem

4 directories, 16 files

Utilisation des scripts dans Apache

Voici un morceau de contenue d'un vhost apache

# Cette partie est dédié au certificat server
SSLEngine on
SSLCertificateFile "/etc/ssl/test.draak.fr/server.test.draak.fr.pem"
SSLCertificateKeyFile "/etc/ssl/test.draak.fr/server.test.draak.fr.key"

# Celle ci est pour la partie client
SSLVerifyClient require
SSLCACertificateFile "/etc/ssl/test.draak.fr/rootCA.test.draak.fr.pem"

Et vous pourrez ajouter le client.test.draak.fr.p12 a votre navigateur.

Voici un exemple avec firefox. On commence à aller dans les options puis:

certif/pki.1546563167.txt.gz · Dernière modification: 2019/01/04 01:52 par draak