2095
Commentaire: ouf, merci HSC c'est plus clair ainsi
|
5536
initialisation des crl lors de la création des AC
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Lectures : * http://www.hsc.fr/ressources/breves/ssl_configuration.html.fr * http://www.faqs.org/rfcs/rfc2459.html miam miam que du bonheur |
|
Ligne 5: | Ligne 2: |
Fichier openssl.cnf modèle (en cours d'écriture) : [[attachment:openssl.cnf]] |
Dans ce qui suit `../openssl.cnf` est le fichier disponible ici : http://git.auf.org/?p=pki;a=blob;f=openssl.cnf;hb=HEAD |
Ligne 12: | Ligne 8: |
$ mkdir racine; cd racine; mkdir keys requests certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand | racine$ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand |
Ligne 14: | Ligne 10: |
1. Création d'une clef privée 2048 bits, cryptée par un mot de passe : | 1. Création d'une clef privée 2048 bits (cryptée par un mot de passe) et d'une requête de certificat : |
Ligne 16: | Ligne 12: |
$ openssl genrsa -out ca-key.pem -des3 2048 | racine$ openssl req -config ../openssl.cnf -newkey rsa:2048 -out request-ca-racine.pem |
Ligne 20: | Ligne 16: |
Enter pass phrase for ca-key.pem: | Enter pass phrase for ca-key.pem: |
Ligne 22: | Ligne 18: |
}}} 1. Création du certificat auto-signé (on est sur la racine) avec les extensions spécifiques : {{{ $ openssl req -new -x509 -key ca-key.pem -out ca-cert.pem -text -config ../openssl.cnf -extensions ca_racine -days $((20*365)) Enter pass phrase for ca-key.pem: |
|
Ligne 36: | Ligne 27: |
1. Auto-signature du certificat (on est sur la racine) avec les extensions spécifiques (ca_racine): {{{ racine$ openssl ca -config ../openssl.cnf -selfsign -extensions ca_racine -in request-ca-racine.pem -out ca-cert.pem Using configuration from ../openssl.cnf Enter pass phrase for ca-key.pem: Check that the request matches the signature Signature ok Certificate Details: (...) Certificate is to be certified until Mar 5 10:20:49 2018 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated }}} 1. Un peu de protection contre les mauvaise manipulations : {{{ $ chmod 0400 ca-key.pem $ chmod 0444 ca-cert.pem }}} 1. Initialisation de la CRL (sera forcément vite) : {{{ $ openssl ca -config ../openssl.cnf -gencrl -out ca-crl.pem <-- au format PEM $ openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der <-- et transformation en format DER (pour diffusion) }}} |
|
Ligne 37: | Ligne 53: |
= Résultat = | Note : pour ceux qui connaissent openvpn, on pourrait faire le tout en une seule étape, sans passer par une requête de certificat. Mais en utilisant la technique requête + auto-signature, le certificat auto-signé se retrouve dans la ligne des certificats signés par l'AC (fichier `index.txt`). Je trouve ça plus joli... |
Ligne 39: | Ligne 55: |
1. Résultats | '''Pour aller encore plus vite :''' |
Ligne 41: | Ligne 57: |
$ ls ca-cert.pem ca-key.pem certs crlnumber index.txt keys newcerts openssl.cnf requests serial |
$ export OPENSSL_CONF=/repertoire/de/openssl.cnf $ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand $ openssl req -newkey rsa:2048 -out request-ca-racine.pem $ openssl ca -selfsign -extensions ca_racine -in request-ca-racine.pem -out ca-cert.pem $ chmod 0400 ca-key.pem ; chmod 0444 ca-cert.pem $ openssl ca -gencrl -out ca-crl.pem ; openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der |
Ligne 44: | Ligne 64: |
1. La clé privée est bien encryptée : | == Vérification des résultats == Examen du certificat produit (vérification des dates et des extensions) : |
Ligne 46: | Ligne 69: |
$ cat ca-key.pem -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,4BD4AF9549CA734C |
racine$ openssl x509 -text -in ca-cert.pem -noout # liste de toutes les données du certificat, notamment dates et extensions racine$ openssl x509 -purpose -in ca-cert.pem -noout # liste des utilisations possibles du certificat }}} |
Ligne 51: | Ligne 73: |
hsGEs99W6Rll5+x2WJlkcoeMpMXihgFaeKErvT/UWor/sJuMkLAZsnP1sRyd/vPf (...) DoO4h8lbMXwA6TtOC9uklFghpAmPQpbaYJ8IQMD+YMM= -----END RSA PRIVATE KEY----- |
= Création d'une AC régionale = Dans ce qui suit, remplacer `regionX` par le nom abrégé de la région. 1. Préparation {{{ region$ mkdir regionX; cd regionX; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand |
Ligne 56: | Ligne 81: |
1. Examen du certificat produit (vérification dates et extensions) : | 1. Création de la clé (cryptée par un mot de passe) et établissement de la demande de certificat : |
Ligne 58: | Ligne 83: |
$ openssl x509 -text -in ca-cert.pem -noout # liste de toutes les données du certificat, notamment dates et extensions $ openssl x509 -purpose -in ca-cert.pem -noout # liste des utilisations possibles du certificat |
region$ openssl req -config ../openssl.cnf -newkey rsa:2048 -out request-ca-region.pem Generating RSA private key, 2048 bit long modulus ......................+++ e is 65537 (0x10001) Enter pass phrase for ca-key.pem: Verifying - Enter pass phrase for ca-key.pem: (... exemple pour le BAO ...) Code ISO du pays (2 lettres) [CA]:SN Province ou region (nom complet) [Quebec]:. Ville (nom complet) [Montreal]:Dakar Organisation [AUF]: Unite (implantation, service, programme, ...) [DRI]: Nom canonique (TOUJOURS TRES IMPORTANT) [AUF-AC-RACINE]:AUF-AC-BAO Adresse electronique (email) [rpv@auf.org]: |
Ligne 61: | Ligne 98: |
1. Le fichier `request-ca-regionX.pem` est la demande : il doit être envoyé à l'autorité de certification racine 1. '''Sur l'AC racine''' : la demande est signée et devient un certificat `certs/ca-regionX.pem` qui possède les extensions x509 requises pour une autorité de certification : {{{ racine$ openssl ca -config ../openssl.cnf -in request-ca-regionX.pem -extensions ca_region -out certs/ca-regionX.pem }}} 1. '''Retour à l'AC régionale''' : le fichier `certs/ca-regionX.pem` est renvoyé à l'autorité régionale, qui le renomme `ca-cert.pem` : c'est le certificat, placé à côté de `ca-key.pem` qui est la clé privée correspondante. 1. Un peu de protection contre les mauvaise manipulations : {{{ $ chmod 0400 ca-key.pem $ chmod 0444 ca-cert.pem }}} 1. Initialisation de la CRL (sera forcément vite). Noter qu'on indique à `openssl` la variable d'environnement `REGION` qui doit contenir le nom de la région (typiquement `bao` ou `beom`, en minuscules), cette variable est utilisée dans des extensions ajoutées à la CRL : {{{ $ REGION=xxxx openssl ca -config ../openssl.cnf -gencrl -out ca-crl.pem <-- au format PEM $ openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der <-- et transformation en format DER (pour diffusion) }}} |
Dans ce qui suit ../openssl.cnf est le fichier disponible ici : http://git.auf.org/?p=pki;a=blob;f=openssl.cnf;hb=HEAD
Création d'une AC racine
- Préparation
racine$ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand
- Création d'une clef privée 2048 bits (cryptée par un mot de passe) et d'une requête de certificat :
racine$ openssl req -config ../openssl.cnf -newkey rsa:2048 -out request-ca-racine.pem Generating RSA private key, 2048 bit long modulus ......................+++ e is 65537 (0x10001) Enter pass phrase for ca-key.pem: Verifying - Enter pass phrase for ca-key.pem: (...) Code ISO du pays (2 lettres) [CA]: Province ou region (nom complet) [Quebec]: Ville (nom complet) [Montreal]: Organisation [AUF]: Unite (implantation, service, programme, ...) [DRI]: Nom canonique (TOUJOURS TRES IMPORTANT) [AUF-AC-RACINE]: Adresse electronique (email) [rpv@auf.org]:
- Auto-signature du certificat (on est sur la racine) avec les extensions spécifiques (ca_racine):
racine$ openssl ca -config ../openssl.cnf -selfsign -extensions ca_racine -in request-ca-racine.pem -out ca-cert.pem Using configuration from ../openssl.cnf Enter pass phrase for ca-key.pem: Check that the request matches the signature Signature ok Certificate Details: (...) Certificate is to be certified until Mar 5 10:20:49 2018 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
- Un peu de protection contre les mauvaise manipulations :
$ chmod 0400 ca-key.pem $ chmod 0444 ca-cert.pem
- Initialisation de la CRL (sera forcément vite) :
$ openssl ca -config ../openssl.cnf -gencrl -out ca-crl.pem <-- au format PEM $ openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der <-- et transformation en format DER (pour diffusion)
Note : pour ceux qui connaissent openvpn, on pourrait faire le tout en une seule étape, sans passer par une requête de certificat. Mais en utilisant la technique requête + auto-signature, le certificat auto-signé se retrouve dans la ligne des certificats signés par l'AC (fichier index.txt). Je trouve ça plus joli...
Pour aller encore plus vite :
$ export OPENSSL_CONF=/repertoire/de/openssl.cnf $ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand $ openssl req -newkey rsa:2048 -out request-ca-racine.pem $ openssl ca -selfsign -extensions ca_racine -in request-ca-racine.pem -out ca-cert.pem $ chmod 0400 ca-key.pem ; chmod 0444 ca-cert.pem $ openssl ca -gencrl -out ca-crl.pem ; openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der
Vérification des résultats
Examen du certificat produit (vérification des dates et des extensions) :
racine$ openssl x509 -text -in ca-cert.pem -noout # liste de toutes les données du certificat, notamment dates et extensions racine$ openssl x509 -purpose -in ca-cert.pem -noout # liste des utilisations possibles du certificat
Création d'une AC régionale
Dans ce qui suit, remplacer regionX par le nom abrégé de la région.
- Préparation
region$ mkdir regionX; cd regionX; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand
- Création de la clé (cryptée par un mot de passe) et établissement de la demande de certificat :
region$ openssl req -config ../openssl.cnf -newkey rsa:2048 -out request-ca-region.pem Generating RSA private key, 2048 bit long modulus ......................+++ e is 65537 (0x10001) Enter pass phrase for ca-key.pem: Verifying - Enter pass phrase for ca-key.pem: (... exemple pour le BAO ...) Code ISO du pays (2 lettres) [CA]:SN Province ou region (nom complet) [Quebec]:. Ville (nom complet) [Montreal]:Dakar Organisation [AUF]: Unite (implantation, service, programme, ...) [DRI]: Nom canonique (TOUJOURS TRES IMPORTANT) [AUF-AC-RACINE]:AUF-AC-BAO Adresse electronique (email) [rpv@auf.org]:
Le fichier request-ca-regionX.pem est la demande : il doit être envoyé à l'autorité de certification racine
Sur l'AC racine : la demande est signée et devient un certificat certs/ca-regionX.pem qui possède les extensions x509 requises pour une autorité de certification :
racine$ openssl ca -config ../openssl.cnf -in request-ca-regionX.pem -extensions ca_region -out certs/ca-regionX.pem
Retour à l'AC régionale : le fichier certs/ca-regionX.pem est renvoyé à l'autorité régionale, qui le renomme ca-cert.pem : c'est le certificat, placé à côté de ca-key.pem qui est la clé privée correspondante.
- Un peu de protection contre les mauvaise manipulations :
$ chmod 0400 ca-key.pem $ chmod 0444 ca-cert.pem
Initialisation de la CRL (sera forcément vite). Noter qu'on indique à openssl la variable d'environnement REGION qui doit contenir le nom de la région (typiquement bao ou beom, en minuscules), cette variable est utilisée dans des extensions ajoutées à la CRL :
$ REGION=xxxx openssl ca -config ../openssl.cnf -gencrl -out ca-crl.pem <-- au format PEM $ openssl crl -inform PEM -in ca-crl.pem -outform DER -out ca-crl.der <-- et transformation en format DER (pour diffusion)