Modification de OpenSSL : Configuration

Attention : vous n’êtes pas connecté(e). Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous vous connectez ou créez un compte, vos modifications seront attribuées à votre propre nom d’utilisateur(rice) et vous aurez d’autres avantages.

La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.

Version actuelle Votre texte
Ligne 1 : Ligne 1 :
{{Auteur|Adadov}}
{{EnCours|auteur=Adadov}}
__TOC__
Protéger les données qui transitent au travers des différents protocoles peut parfois être primordial. Le chiffrement le plus utilisé actuellement est SSL. Le principe de SSL est basé sur l'utilisation de deux clés : une clé publique qui sert à déchiffrer et une clé privée qui sert à chiffrer (on parle de chiffrement asymétrique). La clé privée doit rester confidentielle alors que la clé publique peut-être transmise sans problème à tous le monde.
Protéger les données qui transitent au travers des différents protocoles peut parfois être primordial. Le chiffrement le plus utilisé actuellement est SSL. Le principe de SSL est basé sur l'utilisation de deux clés : une clé publique qui sert à déchiffrer et une clé privée qui sert à chiffrer (on parle de chiffrement asymétrique). La clé privée doit rester confidentielle alors que la clé publique peut-être transmise sans problème à tous le monde.
La validité des clés publiques est assurée par une autorité de certification.
La validité des clés publiques est assurée par une autorité de certification.
Ligne 11 : Ligne 10 :


=Installation et généralités=
=Installation et généralités=
Pour installer openssl utilisez aptitude :
<pre>aptitude install openssl</pre>
Attention : certains paquets peuvent avoir besoin d'accéder au fichier <code>/etc/ssl/openssl.cnf</code> (c'est par exemple le cas de bind9 depuis une mise à jour de sécurité). Veillez donc à ce que ce fichier reste accessible en lecture pour other.


Le programme openssl fonctionne de la manière suivante :
Le programme openssl fonctionne de la manière suivante :
Ligne 45 : Ligne 49 :
=Mise en place d'une autorité de certification=
=Mise en place d'une autorité de certification=


Pour commencer il faut créer une arborescence pour l'AC dans /opt/ssl/. Nous allons créer les arborescences suivante :
Pour commencer il faut créer une arborescence pour l'AC dans /etc/ssl/. Nous allons créer les arborescences suivante :
<pre>
<pre>
     root_ca/
     root_ca/
Ligne 57 : Ligne 61 :
et
et
<pre>
<pre>
     ssl_ca/
     core_ca/
     |-- certs/
     |-- certs/
     |-- crl/
     |-- crl/
Ligne 67 : Ligne 71 :


Exécutez les commandes suivantes :
Exécutez les commandes suivantes :
{{LxTerm|user=root
<pre>
|text=mkdir -p /opt/ssl/{root,ssl}_ca/{certs,crl,newcerts,private}
mkdir -p /etc/ssl/root_ca/{certs,crl,newcerts,private}
cd /opt/ssl
mkdir -p /etc/ssl/core_ca/{certs,crl,newcerts,private}
touch {root,ssl}_ca/index.txt
touch /etc/ssl/root_ca/index.txt
echo 01 > root_ca/serial  
touch /etc/ssl/core_ca/index.txt
echo 01 > ssl_ca/serial  
echo 01 > /etc/ssl/root_ca/serial
}}
echo 01 > /etc/ssl/core_ca/serial
</pre>


==Le fichier /etc/openssl.cnf==
==le fichier /etc/openssl.cnf==
Ensuite nous allons configurer <code>/etc/ssl/openssl.cnf</code> pour qu'il reconnaisse cette arborescence.
Ensuite nous allons configurer <code>/etc/ssl/openssl.cnf</code> pour qu'il reconnaisse cette arborescence.
La configuration est divisée en plusieurs sections qui commencent chacune par <code>[ nom_de_section ]</code>.
La configuration est divisée en plusieurs sections qui commencent chacune par <code>[ nom_de_section ]</code>.
Ligne 101 : Ligne 106 :
#l'autorité de certification intermédiaire valable 10 ans
#l'autorité de certification intermédiaire valable 10 ans
[ core_ca ]
[ core_ca ]
dir            = /etc/ssl/ssl_ca
dir            = /etc/ssl/core_ca
certs          = $dir/certs   
certs          = $dir/certs   
new_certs_dir  = $dir/newcerts
new_certs_dir  = $dir/newcerts
Ligne 192 : Ligne 197 :
==Création de l'autorité root==
==Création de l'autorité root==
Maintenant nous pouvons créer le certificat de l'autorité de certification :
Maintenant nous pouvons créer le certificat de l'autorité de certification :
{{LxTerm|user=root
<pre>
|text=cd /etc/ssl/root_ca/
cd /etc/ssl/root_ca/
openssl req -x509 -config /etc/ssl/openssl.cnf -newkey rsa:4096 -extensions ROOT_CA -days 3650 -keyout private/root_ca.key -out root_ca.pem
openssl req -x509 -config /etc/ssl/openssl.cnf -newkey rsa:4096 -extensions ROOT_CA -days 3650 -keyout private/root_ca.key -out root_ca.pem
}}
</pre>


Quelques explications :
Quelques explications :
Ligne 209 : Ligne 214 :


Pour s'assurer de la sécurité de la clé privée :
Pour s'assurer de la sécurité de la clé privée :
{{LxTerm|user=root|text=chmod -R 600 /etc/ssl/root_ca/private}}
<pre>
chmod -R 600 /etc/ssl/root_ca/private
</pre>


==Création de l'autorité intermédiaire==
==Création de l'autorité intermédiaire==
L'autorité de certification root est maintenant créée. Nous allons créer l'autorité intermédiaire.
L'autorité de certification root est maintenant créée. Nous allons créer l'autorité intermédiaire.
On commence par créer une nouvelle clé privé ainsi qu'une demande de certificat :
On commence par créer une nouvelle clé privé ainsi qu'une demande de certificat :
{{LxTerm|user=root
<pre>
|text=cd /etc/ssl/core_ca
cd /etc/ssl/core_ca
openssl req -newkey rsa:4096 -keyout private/core_ca.key -out core_ca.req
openssl req -newkey rsa:4096 -keyout private/core_ca.key -out core_ca.req
}}
</pre>
Puis on signe le certificat en utilisant la ca par défaut (défini dans le fichier openssl.cnf), c'est-à-dire, la CA_ROOT.
Puis on signe le certificat en utilisant la ca par défaut (défini dans le fichier openssl.cnf), c'est-à-dire, la CA_ROOT.
Notez qu'on précise qu'il faut configurer ce nouveau certificat en utilisant la section CORE_CA du fichier de configuration.
Notez qu'on précise qu'il faut configurer ce nouveau certificat en utilisant la section CORE_CA du fichier de configuration.
{{LxTerm|user=root|text=openssl ca -extensions CORE_CA -in core_ca.req -out core_ca.pem}}
<pre>
openssl ca -extensions CORE_CA -in core_ca.req -out core_ca.pem
</pre>
Enfin, on s'assure que la clé privée de cette nouvelle autorité est elle aussi à l'abri :
Enfin, on s'assure que la clé privée de cette nouvelle autorité est elle aussi à l'abri :
{{LxTerm|user=root|text=chmod -R 600 private/}}
<pre>
chmod -R 600 private/
</pre>


On peut maintenant créer des certificats et les signer avec notre autorité intermédiaire.
On peut maintenant créer des certificats et les signer avec notre autorité intermédiaire.
Pour générer la clé privé et la demande de certificat :
Pour générer la clé privé et la demande de certificat :
{{LxTerm|user=root|text=openssl req -newkey rsa:2048 -keyout cle-privee.key -out cle-publique.req}}
<pre>
openssl req -newkey rsa:2048 -keyout cle-privee.key -out cle-publique.req
</pre>
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code<core_ca</code> pour signer notre nouveau certificat.
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code<core_ca</code> pour signer notre nouveau certificat.
{{LxTerm|user=root|text=openssl ca -name core_ca -in cle-publique.req -out certificat.pem}}
<pre>
openssl ca -name core_ca -in cle-publique.req -out certificat.pem
</pre>


Pour que les clients (http, mail, ftp, ...) reconnaissent comme valide les certificats que vous signez avec votre AC il faut ajouter le fichier <code>/etc/ssl/root_ca/root_ca.pem</code> (et <code>/etc/ssl/core_ca/core_ca.pem</code> si votre serveur est mal configuré) à leur liste d'autorité de certification valide.
Pour que les clients (http, mail, ftp, ...) reconnaissent comme valide les certificats que vous signez avec votre AC il faut ajouter le fichier <code>/etc/ssl/root_ca/root_ca.pem</code> (et <code>/etc/ssl/core_ca/core_ca.pem</code> si votre serveur est mal configuré) à leur liste d'autorité de certification valide.
Ligne 252 : Ligne 267 :


On génère la clé privé et la demande de certificat :
On génère la clé privé et la demande de certificat :
{{LxTerm|user=root|text=openssl req -newkey rsa:2048 -keyout cle-privee.key -out cle-publique.req}}
<pre>
openssl req -newkey rsa:2048 -keyout cle-privee.key -out cle-publique.req
</pre>
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code>core_ca</code> pour signer notre nouveau certificat :
Puis on signe le certificat. L'option <code>-name</code> permet de préciser qu'il faut utiliser l'autorité <code>core_ca</code> pour signer notre nouveau certificat :
{{LxTerm|user=root|text=openssl ca -name core_ca -extensions SERVER_SSL -in cle-publique.req -out certificat.pem}}
<pre>
openssl ca -name core_ca -extensions SERVER_SSL -in cle-publique.req -out certificat.pem
</pre>


=Générer des certificats clients=
=Générer des certificats clients=
Ligne 276 : Ligne 295 :
=Révoquer un certificat=
=Révoquer un certificat=


{{LxTerm|user=root|text=openssl ca -revoke blah.pem}}
<pre>openssl ca -revoke blah.pem</pre>
[[Category:SysAdmin]]
[[Category:SysAdmin]]
[[Category:Security]]
[[Category:security]]
[[Category:OpenSSL]]
Notez bien que toutes les contributions à Adadov.net wiki peuvent être modifiées, transformées ou supprimées par d’autres utilisateurs. Si vous ne désirez pas que vos écrits soient modifiés contre votre gré, merci de ne pas les soumettre ici.
Vous nous promettez aussi que vous avez écrit ceci vous-même ou que vous l’avez copié d’une source placée dans le domaine public ou d’une ressource libre similaire (voir AdadovNet:Copyrights pour plus de détails). N’utilisez aucun travail sous droits d’auteur sans autorisation expresse !
Annuler Aide pour la modification (s’ouvre dans une nouvelle fenêtre)