3514
Commentaire: ça a l'air bon pour la CA racine... reste 98712983 étapes à franchir ;)
|
4093
clé + req en même temps
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Fichier openssl.cnf modèle : [[attachment:openssl.cnf]] |
|
Ligne 7: | Ligne 5: |
$ mkdir racine $ cd racine $ mkdir keys requests certs newcerts $ echo 01 > serial $ echo 01 > crlnumber $ touch index.txt .rand $ chmod 400 .rand $ cp /modele/openssl.cnf . |
racine$ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand |
Ligne 16: | Ligne 7: |
2. Création de la clé et du certificat auto-signé : |
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 19: | Ligne 9: |
$ openssl req -config ./openssl.cnf -new -x509 -text -out ca-cert.pem -days $((20*365)) Generating a 1024 bit RSA private key .........++++++ .....................................................++++++ writing new private key to 'ca-key.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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. ----- Code ISO pays (2 lettres) [CA]: Province ou Region (nom complet) [Quebec]: |
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]: |
Ligne 40: | Ligne 22: |
Adresse e-mail [rpv@auf.org]: | Adresse electronique (email) [rpv@auf.org]: |
Ligne 42: | Ligne 24: |
1. Résultats | 1. Auto-signature du certificat (on est sur la racine) avec les extensions spécifiques (ca_racine): |
Ligne 44: | Ligne 26: |
$ ls ca-cert.pem ca-key.pem certs crlnumber index.txt keys newcerts openssl.cnf requests serial |
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 |
Ligne 47: | Ligne 39: |
1. La clé privée est bien encryptée : | 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 :''' |
Ligne 49: | Ligne 44: |
$ cat ca-key.pem -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,2ECD333F18F369EB |
$ 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 }}} |
Ligne 54: | Ligne 50: |
hsGEs99W6Rll5+x2WJlkcoeMpMXihgFaeKErvT/UWor/sJuMkLAZsnP1sRyd/vPf (...) DoO4h8lbMXwA6TtOC9uklFghpAmPQpbaYJ8IQMD+YMM= -----END RSA PRIVATE KEY----- |
== 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 |
Ligne 59: | Ligne 57: |
1. Examen du certificat produit (vérification dates et extensions) : | = 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 |
Ligne 61: | Ligne 64: |
$ cat ca-cert.pem Certificate: Data: Version: 3 (0x2) Serial Number: ab:21:06:a3:13:fd:5e:57 Signature Algorithm: sha1WithRSAEncryption Issuer: C=CA, ST=Quebec, L=Montreal, O=AUF, OU=DRI, CN=AUF-AC-RACINE/emailAddress=rpv@auf.org Validity Not Before: Feb 25 00:01:16 2008 GMT Not After : Feb 20 00:01:16 2028 GMT Subject: C=CA, ST=Quebec, L=Montreal, O=AUF, OU=DRI, CN=AUF-AC-RACINE/emailAddress=rpv@auf.org Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (1024 bit) Modulus (1024 bit): 00:af:08:7d:88:73:55:ba:f2:8e:ce:c0:de:d8:a5: (...) c3:3e:07:98:c7:b7:0d:ba:a7 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: 4B:C5:0B:8E:8B:65:F2:6F:05:21:46:B9:16:B7:A8:52:C5:CB:55:33 X509v3 Authority Key Identifier: keyid:4B:C5:0B:8E:8B:65:F2:6F:05:21:46:B9:16:B7:A8:52:C5:CB:55:33 DirName:/C=CA/ST=Quebec/L=Montreal/O=AUF/OU=DRI/CN=AUF-AC-RACINE/emailAddress=rpv@auf.org serial:AB:21:06:A3:13:FD:5E:57 |
region$ mkdir regionX; cd regionX; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand }}} 1. 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]: }}} 1. Le fichier `request-ca-regionX.pem` est la demande : il doit être envoyé à l'autorité de certification racine |
Ligne 89: | Ligne 85: |
X509v3 Basic Constraints: critical CA:TRUE Signature Algorithm: sha1WithRSAEncryption 24:2f:3b:fa:fc:e0:d8:80:75:73:86:b7:0f:07:1f:05:26:d9: (...) 79:e7 -----BEGIN CERTIFICATE----- MIIDbzCCAtigAwIBAgIJAKshBqMT/V5XMA0GCSqGSIb3DQEBBQUAMIGBMQswCQYD (...) mrdR/A2z3wCg34MlrhXnh+t55w== -----END CERTIFICATE----- |
'''Sur l'AC racine''', signature de la demande pour création d'un certificat `certs/ca-regionX.pem` : {{{ racine$ openssl ca -config ../openssl.cnf -in request-ca-regionX.pem -extensions ca_region -out certs/ca-regionX.pem |
Ligne 101: | Ligne 89: |
Le fichier `certs/ca-regionX.pem` est renvoyé à l'autorité régionale, qui le renomme `ca-cert.pem` : c'est le certificat, à côté de `ca-key.pem` qui est la clé privée correspondante. |
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
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
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, signature de la demande pour création d'un certificat certs/ca-regionX.pem :
racine$ openssl ca -config ../openssl.cnf -in request-ca-regionX.pem -extensions ca_region -out certs/ca-regionX.pem
Le fichier certs/ca-regionX.pem est renvoyé à l'autorité régionale, qui le renomme ca-cert.pem : c'est le certificat, à côté de ca-key.pem qui est la clé privée correspondante.