« LINUX:Création d'une CA privée (V1) » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
----
''→ [[LINUX:Certificats|retour aux certificats]]''
----
=But=
=But=
Dans cet article, nous allons créer une CA privée accompagnée du nécessaire pour un serveur WEB ou Mail en ce qui concerne les clés.
Dans cet article, nous allons créer une CA privée accompagnée du nécessaire pour un serveur WEB ou Mail en ce qui concerne les clés.
Cette approche nous sera utile pour résoudre des problèmes liés à l'utilisation de ressources interne WEB et Mail. Reportez-vous à l'article [[LINUX:Problèmes-Cryptage|Problèmes suite au cryptage]].
Cette approche nous sera utile pour résoudre des problèmes liés à l'utilisation de ressources interne WEB et Mail. Reportez-vous à l'article [[LINUX:Problèmes-Cryptage|Problèmes suite au cryptage]].
Le certificat public du serveur qui sera créé, est de version 1.




Ligne 26 : Ligne 31 :


On remarque que la clé est protégée par un mot de passe. Ce mot de passe est à adapter.
On remarque que la clé est protégée par un mot de passe. Ce mot de passe est à adapter.
Cette clé n'est à créer qu'une fois.




Ligne 31 : Ligne 37 :
Maintenant on crée la clé privée pour le domaine, ici le serveur ("'''/etc/pki/home/private/localhost.key'''").
Maintenant on crée la clé privée pour le domaine, ici le serveur ("'''/etc/pki/home/private/localhost.key'''").
  openssl genrsa -out /etc/pki/home/private/localhost.key 2048
  openssl genrsa -out /etc/pki/home/private/localhost.key 2048
Cette clé n'est à créer qu'une fois.




=Création d'un certificat publique CA=
=Création d'un certificat publique CA=
La première étape de création des certificat est la création d'un certificat publique CA pour le domaine, ici pour l'exemple "home.dom" ("'''/etc/pki/home/certs/ca.crt'''").
La première étape de création des certificat est la création d'un certificat publique CA pour le domaine, ici pour l'exemple "home.dom" ("'''/etc/pki/home/certs/ca.home.crt'''").
  openssl req -new -days 3650 -x509 -out /etc/pki/home/certs/ca.crt -passin pass:MOTDEPASSESECRET  -key /etc/pki/CA/private/ca.key -subj '/CN=CA.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'
  openssl req -new -days 3650 -x509 -out /etc/pki/home/certs/ca.home.crt -passin pass:MOTDEPASSESECRET  -key /etc/pki/CA/private/ca.key -subj '/CN=CA.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'


On remarque que pour accéder à la clé privée CA, il faut donner le mot de passe.
On remarque que pour accéder à la clé privée CA, il faut donner le mot de passe.
Ligne 41 : Ligne 48 :
On remarque aussi qu'au lieu de répondre aux questions d'identification du propriétaire, ils se trouvent en paramètres; mais on aurait pu répondre aux questions. Seul le "Common Name" change. Il est important que ce nom soit différent de celui du serveur ou du site virtuel.
On remarque aussi qu'au lieu de répondre aux questions d'identification du propriétaire, ils se trouvent en paramètres; mais on aurait pu répondre aux questions. Seul le "Common Name" change. Il est important que ce nom soit différent de celui du serveur ou du site virtuel.


Ce certificat est valable 10 ans (3650 jours). Il n'est à faire qu'une fois pour autant de certificats publique de serveur ou site présentés ci-dessous.
Ce certificat est valable 10 ans (3650 jours). Il n'est à faire qu'une fois par domaine (ex: home.dom) sauf si la période de validité est dépassée auquel cas il faut le recréer avec la même commande. Ensuite il faut la redistribuer.




Ligne 48 : Ligne 55 :
Elle comporte deux étapes: la requête et la création du certificat publique.
Elle comporte deux étapes: la requête et la création du certificat publique.


On commence par faire une requête pour obtenir le certificat ("'''/etc/pki/home/req/localhost.csr'''").
On commence par faire une requête pour obtenir le certificat ("'''/etc/pki/home/req/serverdb.home.csr'''").
  openssl req -new -key /etc/pki/home/private/localhost.key -out /etc/pki/home/req/localhost.csr -subj '/CN=serverdb.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'
  openssl req -new -key /etc/pki/home/private/localhost.key -out /etc/pki/home/req/serverdb.home.csr -subj '/CN=serverdb.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'


Comme ci-dessus, les informations de propriété sont ajoutées en option. Ici le "Common Name" est celui du serveur (ou du site si c'était par exemple, "www.home.dom").
Comme ci-dessus, les informations de propriété sont ajoutées en option. Ici le "Common Name" est celui du serveur (ou du site si c'était par exemple, "www.home.dom").
Ligne 55 : Ligne 62 :


=Création du certificat publique pour le serveur=
=Création du certificat publique pour le serveur=
Vient l'étape finale, la création du certificat publique du serveur ou du site ("'''/etc/pki/home/certs/localhost.crt'''".
Vient l'étape finale, la création du certificat publique du serveur ou du site ("'''/etc/pki/home/certs/serverdb.home.crt'''".
  openssl x509 -req -days 3650 -in /etc/pki/home/req/localhost.csr -out /etc/pki/home/certs/localhost.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.crt -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -CAserial /etc/pki/home/misc/ca.srl
  openssl x509 -req -days 3650 -in /etc/pki/home/req/serverdb.home.csr -out /etc/pki/home/certs/serverdb.home.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.home.crt -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -CAserial /etc/pki/home/misc/ca.home.srl


On voit que sa validation est renforcée par la CA (clés privée et publique), d'où l'ajout du mot de passe.
On voit que sa validation est renforcée par la CA (clés privée et publique), d'où l'ajout du mot de passe qui sécurise notre CA lors de la création de son certificat publique.


Cette opération se fait sur base des informations contenues dans la requête ("'''/etc/pki/home/req/localhost.csr'''").
Cette opération se fait sur base des informations contenues dans la requête ("'''/etc/pki/home/req/serverdb.home.csr'''").


Nous avons choisit 10 ans de validité ("-days 3650") mais vous pouvez définir un autre delais, 1 an par exemple.
Nous avons choisit 10 ans de validité ("-days 3650") mais vous pouvez définir un autre délais, 1 an par exemple.


Pour la première utilisation, il y a initialisation du n° de série. Par la suite, lors du renouvellement ou de la création d'un certificat pour le même domaine, ce fichier sera incrémenté. Chaque certificat publique aura un n° de série différent, ce qui peut être utile lors de la révocation d'un certificat qui n'a plus de raison d'être ou piraté ("'''/etc/pki/home/misc/ca.srl'''").
Pour la première utilisation, il y a initialisation du n° de série. Par la suite, lors du renouvellement ou de la création d'un certificat pour le même domaine, ce fichier sera incrémenté. Chaque certificat publique aura un n° de série différent, ce qui peut être utile lors de la révocation d'un certificat qui n'a plus de raison d'être ou piraté ("'''/etc/pki/home/misc/ca.home.srl'''").


Si on crée un certificat publique pour un autre site, la commande est analogue mais il ne faut pas réinitialiser le n° de série; l'option "'''-CAcreateserial'''" est à éliminer.
Si on crée un certificat publique pour un autre site, la commande est analogue mais il ne faut pas réinitialiser le n° de série; l'option "'''-CAcreateserial'''" est à éliminer.
Notons qu'il est possible d'initialiser ce fichier contenant le n° de série manuellement ("ca.home.srl").
Il suffit de créer ce fichier avec un éditeur de texte et d'y écrire une ligne contenent un numéro, par exemple "01".
Une autre alternative est d'utiliser la commande:
echo "01" > ca.home.srl
Et par ce moyen, on n'utilise pas l'option "-CAcreateserial".




Ligne 74 : Ligne 87 :


Voici deux exemples:
Voici deux exemples:
  cat /etc/pki/home/certs/localhost.crt /etc/pki/home/certs/ca.crt > /etc/pki/home/certs/localhost.pem
  cat /etc/pki/home/certs/serverdb.home.crt /etc/pki/home/certs/ca.home.crt > /etc/pki/home/certs/serverdb.home.pem
  cat /etc/pki/home/private/localhost.key /etc/pki/home/certs/localhost.crt /etc/pki/home/certs/ca.crt > /etc/pki/home/certs/localhost.chaine.pem
  cat /etc/pki/home/private/localhost.key /etc/pki/home/certs/serverdb.home.crt /etc/pki/home/certs/ca.home.crt > /etc/pki/home/certs/serverdb.home.chaine.pem




=Renouvellement de certificats=
=Renouvellement de certificats=
Notons que les clés privées sont créés une fois pour toutes.
Normalement, le renouvellement du certificat publique CA ne devrait pas se passer avant 10 ans (3560 jours). La commande est identique que ci-dessus.  
Normalement, le renouvellement du certificat publique CA ne devrait pas se passer avant 10 ans (3560 jours). La commande est identique que ci-dessus.  
Notons que les clés privées sont créés une fois pour toutes.


Par contre, il se peut qu'il faille renouveler ou recréer le certificat publique du serveur ou site.
Par contre, il se peut qu'il faille renouveler ou recréer le certificat publique du serveur ou site.
La requête présentée ci-dessus est identique mais la création du certificat publique ne présente pas l'initialisation du n° de série!!! L'option "'''-CAcreateserial'''" est à éliminer.
La requête présentée ci-dessus est identique mais la création du certificat publique ne présente pas l'initialisation du n° de série!!! L'option "'''-CAcreateserial'''" est à éliminer.
  openssl x509 -req -days 3650 -in /etc/pki/home/req/localhost.csr -out /etc/pki/home/certs/localhost.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.crt -CAkey /etc/pki/CA/private/ca.key          -CAserial /etc/pki/home/misc/ca.srl
  openssl x509 -req -days 3650 -in /etc/pki/home/req/serverdb.home.csr -out /etc/pki/home/certs/serverdb.home.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.home.crt -CAkey /etc/pki/CA/private/ca.key          -CAserial /etc/pki/home/misc/ca.home.srl


Les chaînes sont bien sûr à refaire en fonction des changements.
Les chaînes sont bien sûr à refaire en fonction des changements.
Ligne 92 : Ligne 105 :




----
''→ [[LINUX:Certificats|retour aux certificats]]''
----
----
''->[[LINUX:Certificats|retour aux certificats]]''
__NOEDITSECTION__
__NOEDITSECTION__
[[Category:LINUX]]

Dernière version du 13 février 2022 à 18:18


retour aux certificats


But

Dans cet article, nous allons créer une CA privée accompagnée du nécessaire pour un serveur WEB ou Mail en ce qui concerne les clés. Cette approche nous sera utile pour résoudre des problèmes liés à l'utilisation de ressources interne WEB et Mail. Reportez-vous à l'article Problèmes suite au cryptage.

Le certificat public du serveur qui sera créé, est de version 1.


Description de la procédure

Nous allons mettre en place une CA comme décrit dans l'article Cryptage SSL, à part que tout restera sur le même serveur. Notons que par serveur (ex: serverdb.home.dom), on entend la machine mais également les noms DNS (virtuels) (ex: www.home.dom, mail.home.dom). Dans notre exemple, le nom de machine est serverdb et son domaine est home.dom. Faisons également remarquer qu'une machine peut héberger des services d'autres domaines (ex: www.interne.dom, mail.interne.dom). On se restreint ici à un usage interne.

Voici les principales étapes:

  • Création d'un clé privée CA
  • Création d'un clé privée pour le serveur
  • Création d'un certificat publique CA pour un domaine (home.dom)
  • Création d'une requête de certificat publique pour le serveur
  • Création sur ces bases de ce certificat publique pour le serveur
  • Création de chaînes diverses pour le serveur

Nous aborderons enfin le problème de renouvellement des certificats lorsque leur période de validité est passée.

La clé privée CA sera mise dans le répertoire "/etc/pki/CA/private/". Nous allons stocker toutes ces clés dans la structure PKI dans le nouveau répertoire "/etc/pki/home/", avec les sous-répertoires "private" pour la clé privée de domaine, "certs" pour les certificats publiques, les requ^tes dans "req" et le n° de série dans "misc".


Création d'un clé privée CA

La première opération est la création d'une clé privée pour la CA "/etc/pki/CA/private/ca.key".

openssl genrsa -out /etc/pki/CA/private/ca.key -passout pass:MOTDEPASSESECRET  2048

On remarque que la clé est protégée par un mot de passe. Ce mot de passe est à adapter. Cette clé n'est à créer qu'une fois.


Création d'un clé privée pour le serveur

Maintenant on crée la clé privée pour le domaine, ici le serveur ("/etc/pki/home/private/localhost.key").

openssl genrsa -out /etc/pki/home/private/localhost.key 2048

Cette clé n'est à créer qu'une fois.


Création d'un certificat publique CA

La première étape de création des certificat est la création d'un certificat publique CA pour le domaine, ici pour l'exemple "home.dom" ("/etc/pki/home/certs/ca.home.crt").

openssl req -new -days 3650 -x509 -out /etc/pki/home/certs/ca.home.crt -passin pass:MOTDEPASSESECRET  -key /etc/pki/CA/private/ca.key -subj '/CN=CA.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'

On remarque que pour accéder à la clé privée CA, il faut donner le mot de passe.

On remarque aussi qu'au lieu de répondre aux questions d'identification du propriétaire, ils se trouvent en paramètres; mais on aurait pu répondre aux questions. Seul le "Common Name" change. Il est important que ce nom soit différent de celui du serveur ou du site virtuel.

Ce certificat est valable 10 ans (3650 jours). Il n'est à faire qu'une fois par domaine (ex: home.dom) sauf si la période de validité est dépassée auquel cas il faut le recréer avec la même commande. Ensuite il faut la redistribuer.


Création d'une requête de certificat publique pour le serveur

Maintenant vient la phase de création du certificat publique pour le serveur ou du site. Elle comporte deux étapes: la requête et la création du certificat publique.

On commence par faire une requête pour obtenir le certificat ("/etc/pki/home/req/serverdb.home.csr").

openssl req -new -key /etc/pki/home/private/localhost.key -out /etc/pki/home/req/serverdb.home.csr -subj '/CN=serverdb.home.dom/emailAddress=pdupont@gmail.com/OU=Dupont/O=Home/L=Namur/ST=Belgique/C=BE'

Comme ci-dessus, les informations de propriété sont ajoutées en option. Ici le "Common Name" est celui du serveur (ou du site si c'était par exemple, "www.home.dom").


Création du certificat publique pour le serveur

Vient l'étape finale, la création du certificat publique du serveur ou du site ("/etc/pki/home/certs/serverdb.home.crt".

openssl x509 -req -days 3650 -in /etc/pki/home/req/serverdb.home.csr -out /etc/pki/home/certs/serverdb.home.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.home.crt -CAkey /etc/pki/CA/private/ca.key -CAcreateserial -CAserial /etc/pki/home/misc/ca.home.srl

On voit que sa validation est renforcée par la CA (clés privée et publique), d'où l'ajout du mot de passe qui sécurise notre CA lors de la création de son certificat publique.

Cette opération se fait sur base des informations contenues dans la requête ("/etc/pki/home/req/serverdb.home.csr").

Nous avons choisit 10 ans de validité ("-days 3650") mais vous pouvez définir un autre délais, 1 an par exemple.

Pour la première utilisation, il y a initialisation du n° de série. Par la suite, lors du renouvellement ou de la création d'un certificat pour le même domaine, ce fichier sera incrémenté. Chaque certificat publique aura un n° de série différent, ce qui peut être utile lors de la révocation d'un certificat qui n'a plus de raison d'être ou piraté ("/etc/pki/home/misc/ca.home.srl").

Si on crée un certificat publique pour un autre site, la commande est analogue mais il ne faut pas réinitialiser le n° de série; l'option "-CAcreateserial" est à éliminer.

Notons qu'il est possible d'initialiser ce fichier contenant le n° de série manuellement ("ca.home.srl"). Il suffit de créer ce fichier avec un éditeur de texte et d'y écrire une ligne contenent un numéro, par exemple "01". Une autre alternative est d'utiliser la commande:

echo "01" > ca.home.srl

Et par ce moyen, on n'utilise pas l'option "-CAcreateserial".


Création de chaînes

Nombre de logiciels demandent des fichiers contenant plusieurs clés. Nous utilisons la commande "cat" d'Unix.

Voici deux exemples:

cat /etc/pki/home/certs/serverdb.home.crt /etc/pki/home/certs/ca.home.crt > /etc/pki/home/certs/serverdb.home.pem
cat /etc/pki/home/private/localhost.key /etc/pki/home/certs/serverdb.home.crt /etc/pki/home/certs/ca.home.crt > /etc/pki/home/certs/serverdb.home.chaine.pem


Renouvellement de certificats

Notons que les clés privées sont créés une fois pour toutes.

Normalement, le renouvellement du certificat publique CA ne devrait pas se passer avant 10 ans (3560 jours). La commande est identique que ci-dessus.

Par contre, il se peut qu'il faille renouveler ou recréer le certificat publique du serveur ou site. La requête présentée ci-dessus est identique mais la création du certificat publique ne présente pas l'initialisation du n° de série!!! L'option "-CAcreateserial" est à éliminer.

openssl x509 -req -days 3650 -in /etc/pki/home/req/serverdb.home.csr -out /etc/pki/home/certs/serverdb.home.crt -passinpass:MOTDEPASSESECRET -CA /etc/pki/home/certs/ca.home.crt -CAkey /etc/pki/CA/private/ca.key          -CAserial /etc/pki/home/misc/ca.home.srl

Les chaînes sont bien sûr à refaire en fonction des changements.




retour aux certificats