Explication d’un échange entre un serveur web et en client chiffré avec SSL.
- Le client se connecte au serveur web via son navigateur.
- Le serveur web présente son certificat qui contient sa clef publique. Ce certificat est signé par une autorité de certification, ce qui permet de valider l’identité du serveur avec lequel on dialogue. Pour valider l’identité de ce serveur il faut que le certificat de l’autorité de certification qui a signé ce certificat soit installé sur le navigateur.
- Le client génère une clef de session et la chiffre avec la clef publique du serveur qui se trouve dans le certificat. Cette clef de session chiffrée est envoyée au serveur web.
- Le serveur web déchiffre la clef de session grâce à sa clef privée.
- Le client et le serveur web peuvent maintenant chiffrer leur trafic grâce à cette clef de session.
Création d’une autorité de certification (CA) avec openssl
- modifier le fichier /etc/ssl/openssl.conf.
Dans la section [CA_default]:
# L'endroit où l'on va stocker les différents fichiers
dir = /etc/ssl/CA
certificate = $dir/my-ca.crt # Le certificat de mon CA
crl = $dir/my-ca.crl # Liste de révocation de certificat
private_key = $dir/private/my-ca.key # La clef privée de mon CA
Les autres paramètres de la section [CA_default] ne changent pas.
Il faut maintenant créer l’arboresence avec les différents dossiers pour notre CA.
mkdir -p /etc/ssl/CA/{certs,crl,private,newcerts}
chmod -R 700 /etc/ssl/CA
Il faut également créer le fichier serial qui contiendra le numéro de série du prochain certificat signé par notre CA et index.txt qui contiendra certaines informations concernant les certificats signés par notre CA.
touch /etc/ssl/CA/index.txt
echo 01 > /etc/ssl/CA/serial
Une fois que l’on a modifié le fichier de configuration et créé l’arboresence, il faut créer la clef privée de notre CA qui sera protégée par un mot de passe. C’est ce mot de passe qui sera demandé à chaque fois que l’on signera un nouveau certificat.
openssl genrsa -out /etc/ssl/CA/private/my-ca.key -des3 2048
Une règle de bonne pratique est de mettre des droits assez restrictifs sur cette clef privée qui ne devrait être lisible que par l’utilisateur root.
chmod 600 /etc/ssl/CA/private/my-ca.key
On peut maintenant créer notre certificat auto-signé, ce certificat pourra être installé sur les clients (navigateur web, client mail…) pour éviter que nos utilisateurs ne recoivent une alerte lorsqu’il se connecteront sur un service qui présente un certificat signé par notre autorité de certification.
Création du self signed:
openssl -req -new -x509 -key /etc/ssl/CA/private/my-ca.key -days 3650 > my-ca.crt
Enter pass phrase for private/my-ca.key:
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.
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.
-----
Country Name (2 letter code) [BE]:
State or Province Name (full name) [Hainaut]:
Locality Name (eg, city) [Kain]:
Organization Name (eg, company) [Test, Inc.]:
Organizational Unit Name (eg, section) []:Test CA
Common Name (eg, YOUR name) []:Test Certificate Authority
Email Address []:test@test.net
Toutes les paramètres qui se trouvent entre crochets sont les valeurs par défaut que l’on peut définir dans la section req_distinguished_name du fichier /etc/ssl/openssl.conf.
Tout est en place pour signer les demandes de signatures de certificats (CSR) pour nos différentes services.
Aucun commentaire :
Enregistrer un commentaire