« LES CERTIFICATS » : différence entre les versions

De TwisterWiki
Aucun résumé des modifications
 
(12 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
= Les certificats avec OpenSSL=
== Les certificats avec OpenSSL==


== Pré-requis ==
=== Pré-requis ===
Afin de pouvoir générer des certificats sous linux, il faut avoir installé openssl
Afin de pouvoir générer des certificats sous linux, il faut avoir installé openssl


Ligne 19 : Ligne 19 :
  nsCaRevocationUrl = http://mon_site/ma_crl.crl
  nsCaRevocationUrl = http://mon_site/ma_crl.crl


== Génération d'une Autorité de certification (CA) ==
=== Génération d'une Autorité de certification (CA) ===
un script tout fait existe dans : /etc/pki/tls/misc ou /usr/lib/ssl/misc
un script tout fait existe dans : /etc/pki/tls/misc ou /usr/lib/ssl/misc
ce script s’appelle CA ou CA.sh et va générer une CA qui permettra de générer et signer les certificats.
ce script s’appelle CA ou CA.sh et va générer une CA qui permettra de générer et signer les certificats.
Ligne 30 : Ligne 30 :
  /etc/pki/tls/cacert.pem
  /etc/pki/tls/cacert.pem


== Génération des certificats ==
=== Génération des certificats ===
Il existe plusieurs format de certificats en fonction de l'utilisation que nous en faisons.
Il existe plusieurs format de certificats en fonction de l'utilisation que nous en faisons.


Ligne 36 : Ligne 36 :
* Format PEM (.crt, .pem, .cer, .der) utilisé principalement sous linux pour apache par exemple.
* Format PEM (.crt, .pem, .cer, .der) utilisé principalement sous linux pour apache par exemple.


=== Générer un certificat PEM ===
==== Générer un certificat PEM ====
  /usr/bin/openssl req -new -nodes -keyout key.pem -out req.pem
  /usr/bin/openssl req -new -nodes -keyout key.pem -out req.pem
  /usr/bin/openssl ca -policy policy_anything -out cert.pem -infiles req.pem
  /usr/bin/openssl ca -policy policy_anything -out cert.pem -infiles req.pem
Ligne 42 : Ligne 42 :
  Il suffit pour l'utiliser de modifier la configuration d'apache et de le relancer
  Il suffit pour l'utiliser de modifier la configuration d'apache et de le relancer


=== Générer un certificat pkcs12 ===
==== Générer un certificat pkcs12 ====
  Ici la clé et la demande de certificat sont dans le même fihier (req.pem)
  Ici la clé et la demande de certificat sont dans le même fihier (req.pem)
  /usr/bin/openssl req -new -keyout req.pem -out req.pem $DAYS
  /usr/bin/openssl req -new -keyout req.pem -out req.pem $DAYS
Ligne 48 : Ligne 48 :
  openssl pkcs12 -export -in cert.pem -inkey req.pem -out cert.pfx
  openssl pkcs12 -export -in cert.pem -inkey req.pem -out cert.pfx


=== Générer un certificat pour le mail (ex : sendmail, pop, webmin, ...) ===
==== Générer un certificat pour le mail (ex : sendmail, pop, webmin, ...) ====


Pour ce type de certificat on utilise la même ligne de commande que pour un cert mais il faut faire des modification manuelles sur le contenu du fichier cert.pem pour qu'il ressemble à ceci :  
Pour ce type de certificat on utilise la même ligne de commande que pour un cert mais il faut faire des modification manuelles sur le contenu du fichier cert.pem pour qu'il ressemble à ceci :  
Ligne 58 : Ligne 58 :
  -----END RSA PRIVATE KEY-----
  -----END RSA PRIVATE KEY-----


== Opérations sur les certificats ==
=== Opérations sur les certificats ===
=== Révoquer un certificat ===
=== Vérification du couple certificat/clé privé ===
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5
 
==== Révoquer un certificat ====
  openssl ca -revoke /etc/pki/tls/misc/cert.pem -key openssl ca -revoke /etc/pki/tls/misc/$CERTIFICAT_REVOKE -key $PRIVATE_KEY_PASSWORD
  openssl ca -revoke /etc/pki/tls/misc/cert.pem -key openssl ca -revoke /etc/pki/tls/misc/$CERTIFICAT_REVOKE -key $PRIVATE_KEY_PASSWORD


Après une révocation d'un certificat il faut régénérer la crl afin d’interdire l'utilisation du certificat que nous venons de révoquer
Après une révocation d'un certificat il faut régénérer la crl afin d’interdire l'utilisation du certificat que nous venons de révoquer


=== Générer une CRL ===
==== Générer une CRL ====
  openssl ca -gencrl -out ma_crl.crl -key pass_de_la_cle_prive_de_la_CA
  openssl ca -gencrl -out ma_crl.crl -key pass_de_la_cle_prive_de_la_CA


=== Changer le format d'un certificat ===
==== Changer le format d'un certificat ====
==== Extraire la clé privée d'un PKCS12 ====
===== Extraire la clé privée d'un PKCS12 =====
cette commande vous demandera le password servant à importer le certificat
cette commande vous demandera le password servant à importer le certificat


  openssl pkcs12 -in certificat.pfx -out certificat_et_cle.pem -nodes
  openssl pkcs12 -in certificat.pfx -out key.pem -nodes -nocerts
Enter Import Password:
MAC verified OK
 
===== Extraire le certificat d'un PKCS12 =====
openssl pkcs12 -in certificat.pfx  -out certificat.pem -nodes -clcerts -nokeys
  Enter Import Password:
  Enter Import Password:
  MAC verified OK
  MAC verified OK


==== Convertir un PEM en PKCS12 ====
===== Extraire la ou les CA d'un PKCS12 =====
openssl pkcs12 -in certificat.pfx  -out certificat.pem -nodes -cacerts -nokeys
Enter Import Password:
MAC verified OK
 
===== Convertir un PEM en PKCS12 =====
  openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx
  openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx


=== Afficher le contenu d'une CSR ===
==== Afficher le contenu d'une CSR ====
openssl req -in moncertificat.csr -text -noout
openssl req -in moncertificat.csr -text -noout
Voici un extrait des informations affichée :
Voici un extrait des informations affichée :
Ligne 90 : Ligne 105 :
                 Modulus (2048 bit):
                 Modulus (2048 bit):


=== Extraire la clé privée d'un PKCS12 ===
== Utilisation d'un keystore java ==
cette commande vous demandera le password servant à importer le certificat
=== C'est quoi un keystore ? ===
* Un keystore est un fichier qui sert de conteneur pour des certificats.
* Pour faire fonctionner tomcat en HTTPS, par exemple, on utilise un keystore
* On peut lister le contenu d'un kestore avec l'outils keytool fourni avec le jdk $JAVA_HOME/bin/keytool ou avec un outil "magique" : portecle : http://sourceforge.net/projects/portecle/
 
* Le keystore est protégé par un password qu'il est possible de modifier
* En règle générale, dans un keystore on stocke un certificat et sa clé privé (comme pour apache en SSL on a besoin de la clé publique et de la clé privée) puis un ou des certificat racines (CA)


openssl pkcs12 -in certificat.pfx -out certificat_et_cle.pem -nodes
=== Manipulations du keystore ===
Enter Import Password:
* Importer un certificat et sa clé privée
MAC verified OK
** Pour importer un certificat et sa clé privée, il faut en premier lieu avoir un certificat au format pkcs12, que l'on va importer via l'outil porteclé
** [[image:import_key_pair.png]]


* Générer une csr
**En premier lieu il faut générer une clé privé,
**Une fois la clé générée, faire clic droit sur la clé privée et choisir "Generate Certification Request"
** [[image:generate_csr.png]]
**Ensuite il faudra importer le certificat reçu de l'organisme choisit pour généré le certificat.


[[category:système]]
[[category:système]]
[[category:Linux]]
[[category:Linux]]

Dernière version du 11 juin 2021 à 10:24

Les certificats avec OpenSSL

Pré-requis

Afin de pouvoir générer des certificats sous linux, il faut avoir installé openssl

Avant de commencer à générer ses certificats, il peut être utile de modifier le fichier openssl.cnf afin de modifier des paramètres par défaut. ce fichier se trouve ici :

- Sous mandriva :
/etc/pki/tls/openssl.cnf
- Sous debian :
/etc/ssl/openssl.cnf
default_days = 1095 #correspond à 3 ans
countryName_default = FR
stateOrProvinceName_default = votre_région
localityName_default = votre_ville
0.organizationName_default = votre_organisation ou société
organizationalUnitName_default = Autorite de certification
nsCaRevocationUrl = http://mon_site/ma_crl.crl

Génération d'une Autorité de certification (CA)

un script tout fait existe dans : /etc/pki/tls/misc ou /usr/lib/ssl/misc ce script s’appelle CA ou CA.sh et va générer une CA qui permettra de générer et signer les certificats.

./CA -newca
va générer une CA valide 3 ans et les fichiers suivants
il est possible en modifiant le script d'augmenter la durée de validité de la CA
/etc/pki/tls/cakey.pem
/etc/pki/tls/careq.pem
/etc/pki/tls/cacert.pem

Génération des certificats

Il existe plusieurs format de certificats en fonction de l'utilisation que nous en faisons.

  • Format pkcs12 (.pfx ou .p12) utilisé sous windows principalement.
  • Format PEM (.crt, .pem, .cer, .der) utilisé principalement sous linux pour apache par exemple.

Générer un certificat PEM

/usr/bin/openssl req -new -nodes -keyout key.pem -out req.pem
/usr/bin/openssl ca -policy policy_anything -out cert.pem -infiles req.pem
Le fichier key.pem sera la clé privée et cert.pem le certificat (public)
Il suffit pour l'utiliser de modifier la configuration d'apache et de le relancer

Générer un certificat pkcs12

Ici la clé et la demande de certificat sont dans le même fihier (req.pem)
/usr/bin/openssl req -new -keyout req.pem -out req.pem $DAYS
openssl ca -policy policy_anything -out $cert.pem -infiles req.pem
openssl pkcs12 -export -in cert.pem -inkey req.pem -out cert.pfx

Générer un certificat pour le mail (ex : sendmail, pop, webmin, ...)

Pour ce type de certificat on utilise la même ligne de commande que pour un cert mais il faut faire des modification manuelles sur le contenu du fichier cert.pem pour qu'il ressemble à ceci :

-----BEGIN CERTIFICATE-----
DQEBAQUAA0sAMEgCQQC9/Be7ZUIdu/3gPp3pZyX98LQP343ehfdNEDLoXUx
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
P2N/saoLUEhBAiEAgpKf1jaYPNzBVovQeqgoeWdiFXJnTwLx7ExPMJ0srAECIBc8
-----END RSA PRIVATE KEY-----

Opérations sur les certificats

Vérification du couple certificat/clé privé

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5

Révoquer un certificat

openssl ca -revoke /etc/pki/tls/misc/cert.pem -key openssl ca -revoke /etc/pki/tls/misc/$CERTIFICAT_REVOKE -key $PRIVATE_KEY_PASSWORD

Après une révocation d'un certificat il faut régénérer la crl afin d’interdire l'utilisation du certificat que nous venons de révoquer

Générer une CRL

openssl ca -gencrl -out ma_crl.crl -key pass_de_la_cle_prive_de_la_CA

Changer le format d'un certificat

Extraire la clé privée d'un PKCS12

cette commande vous demandera le password servant à importer le certificat

openssl pkcs12 -in certificat.pfx -out key.pem -nodes -nocerts
Enter Import Password:
MAC verified OK
Extraire le certificat d'un PKCS12
openssl pkcs12 -in certificat.pfx  -out certificat.pem -nodes -clcerts -nokeys
Enter Import Password:
MAC verified OK
Extraire la ou les CA d'un PKCS12
openssl pkcs12 -in certificat.pfx  -out certificat.pem -nodes -cacerts -nokeys
Enter Import Password:
MAC verified OK
Convertir un PEM en PKCS12
openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx

Afficher le contenu d'une CSR

openssl req -in moncertificat.csr -text -noout Voici un extrait des informations affichée :

Certificate Request:
   Data:
       Version: 0 (0x0)
       Subject: C=country, ST=state, L=ville, O=organisation, OU=organisation Unit, CN=common name/emailAddress=email
       Subject Public Key Info:
           Public Key Algorithm: rsaEncryption
           RSA Public Key: (2048 bit)
               Modulus (2048 bit):

Utilisation d'un keystore java

C'est quoi un keystore ?

  • Un keystore est un fichier qui sert de conteneur pour des certificats.
  • Pour faire fonctionner tomcat en HTTPS, par exemple, on utilise un keystore
  • On peut lister le contenu d'un kestore avec l'outils keytool fourni avec le jdk $JAVA_HOME/bin/keytool ou avec un outil "magique" : portecle : http://sourceforge.net/projects/portecle/
  • Le keystore est protégé par un password qu'il est possible de modifier
  • En règle générale, dans un keystore on stocke un certificat et sa clé privé (comme pour apache en SSL on a besoin de la clé publique et de la clé privée) puis un ou des certificat racines (CA)

Manipulations du keystore

  • Importer un certificat et sa clé privée
    • Pour importer un certificat et sa clé privée, il faut en premier lieu avoir un certificat au format pkcs12, que l'on va importer via l'outil porteclé
  • Générer une csr
    • En premier lieu il faut générer une clé privé,
    • Une fois la clé générée, faire clic droit sur la clé privée et choisir "Generate Certification Request"
    • Ensuite il faudra importer le certificat reçu de l'organisme choisit pour généré le certificat.