3692
Commentaire: se taper une RFC...
|
4994
serveur SSL avec plusieurs noms possibles
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
Ligne 13: | Ligne 12: |
$ 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 22: | Ligne 14: |
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 : |
Ligne 25: | Ligne 16: |
$ 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 genrsa -out ca-key.pem -des3 2048 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: }}} 1. Création du certificat auto-signé (on est sur la racine) avec les extensions spécifiques : {{{ racine$ 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: (...) Code ISO du pays (2 lettres) [CA]: Province ou region (nom complet) [Quebec]: |
Ligne 46: | Ligne 34: |
Adresse e-mail [rpv@auf.org]: | Adresse electronique (email) [rpv@auf.org]: |
Ligne 48: | Ligne 36: |
1. Résultats {{{ $ ls ca-cert.pem ca-key.pem certs crlnumber index.txt keys newcerts openssl.cnf requests serial }}} |
== Résultats == |
Ligne 55: | Ligne 41: |
$ cat ca-key.pem | racine$ cat ca-key.pem |
Ligne 58: | Ligne 44: |
DEK-Info: DES-EDE3-CBC,2ECD333F18F369EB | DEK-Info: DES-EDE3-CBC,4BD4AF9549CA734C |
Ligne 67: | Ligne 53: |
$ 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 |
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 95: | Ligne 57: |
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 |
= Création d'une AC régionale = 1. Préparation {{{ region$ mkdir regionX; cd regionX; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand region$ openssl genrsa -out ca-key.pem -des3 2048 # création de la clé }}} 1. Etablissement de la demande de certificat {{{ region$ openssl req -new -key ca-key.pem -out ca-request.pem -text -config ../openssl.cnf }}} 1. Le fichier `ca-request.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 -out certs/ca-regionX.pem -config ../openssl.cnf -extensions ca_region -infiles ca-req-BAO.pem }}} Le fichier `certs/ca-regionX.pem` est renvoyé à l'autorité régionale, qui le renomme `ca-cert.pem`. /* vérifications ... */ = Emission de certificats = == Serveur == Sur la machine cible, création de la clé et de la demande de certificat : {{{ serveur$ openssl genrsa -out serveur-key.pem -des3 1024 serveur$ openssl req -new -key serveur-key.pem -out serveur-request.pem -config ../openssl.cnf Enter pass phrase for serveur-key.pem: |
Ligne 104: | Ligne 89: |
mrdR/A2z3wCg34MlrhXnh+t55w== -----END CERTIFICATE----- |
Code ISO du pays (2 lettres) [CA]: GN Province ou region (nom complet) [Quebec]: . Ville (nom complet) [Montreal]: Conakry Organisation [AUF]: Unite (implantation, service, programme, ...) [DRI]: Nom canonique (TOUJOURS TRES IMPORTANT) [AUF-AC-RACINE]: www.gn.auf.org Adresse electronique (email) [rpv@auf.org]: www@gn.auf.org |
Ligne 107: | Ligne 97: |
La demande `serveur-request.pem` doit être envoyée à l'autorité régionale, qui la signera pour en faire un certificat. '''Sur l'AC régionale''', signature de la demande et création du certificat `certs/serveur.pem` : {{{ region$ openssl ca -config ../openssl.cnf -extensions server -out certs/serveur-cert.pem -infiles serveur-request.pem }}} Le certificat `certs/serveur-cert.pem` est alors renvoyé au serveur. Note 1 : par défaut la clé `serveur-key.pem` générée sur le serveur est cryptée. Cela peut être problématique si elle doit être utilisée par un serveur qui doit démarrer automatiquement. Dans ce cas on peut vouloir obtenir une version non cryptée de la clé : `openssl rsa -in serveur-key.pem -out serveur-clear.pem` Note 2 : pour un serveur SSL avec plusieurs noms possibles (cas d'un serveur web avec plusieurs !VirtualHost sur une seule adresse IP), il faut positionner la variable d'environnement `OPENSSL_ALT` et de faire une requête avec les extensions `alt_req` : {{{ serveur$ OPENSSL_ALT="DNS:www.site1.org,DNS:www.site2.org,DNS:www.site3.org" openssl req -new -key serveur-key.pem -out serveur-request.pem -config ../openssl.cnf -reqexts alt_req }}} = Gestion des cRLs = = fabrication du CAPath AUF = = Transfert des données = /* un petit blabla sur les bonnes façons (les moins pires) de transférer et valider la transmission des demandes et des certificats */ |
Lectures :
http://www.hsc.fr/ressources/breves/ssl_configuration.html.fr
http://www.faqs.org/rfcs/rfc2459.html miam miam que du bonheur
Fichier openssl.cnf modèle (en cours d'écriture) : openssl.cnf
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 :
racine$ openssl genrsa -out ca-key.pem -des3 2048 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:
- Création du certificat auto-signé (on est sur la racine) avec les extensions spécifiques :
racine$ 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: (...) 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]:
Résultats
- La clé privée est bien encryptée :
racine$ cat ca-key.pem -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,4BD4AF9549CA734C hsGEs99W6Rll5+x2WJlkcoeMpMXihgFaeKErvT/UWor/sJuMkLAZsnP1sRyd/vPf (...) DoO4h8lbMXwA6TtOC9uklFghpAmPQpbaYJ8IQMD+YMM= -----END RSA PRIVATE KEY-----
- Examen du certificat produit (vérification dates et 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
- Préparation
region$ mkdir regionX; cd regionX; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand region$ openssl genrsa -out ca-key.pem -des3 2048 # création de la clé
- Etablissement de la demande de certificat
region$ openssl req -new -key ca-key.pem -out ca-request.pem -text -config ../openssl.cnf
Le fichier ca-request.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 -out certs/ca-regionX.pem -config ../openssl.cnf -extensions ca_region -infiles ca-req-BAO.pem
Le fichier certs/ca-regionX.pem est renvoyé à l'autorité régionale, qui le renomme ca-cert.pem.
Emission de certificats
Serveur
Sur la machine cible, création de la clé et de la demande de certificat :
serveur$ openssl genrsa -out serveur-key.pem -des3 1024 serveur$ openssl req -new -key serveur-key.pem -out serveur-request.pem -config ../openssl.cnf Enter pass phrase for serveur-key.pem: (...) Code ISO du pays (2 lettres) [CA]: GN Province ou region (nom complet) [Quebec]: . Ville (nom complet) [Montreal]: Conakry Organisation [AUF]: Unite (implantation, service, programme, ...) [DRI]: Nom canonique (TOUJOURS TRES IMPORTANT) [AUF-AC-RACINE]: www.gn.auf.org Adresse electronique (email) [rpv@auf.org]: www@gn.auf.org
La demande serveur-request.pem doit être envoyée à l'autorité régionale, qui la signera pour en faire un certificat.
Sur l'AC régionale, signature de la demande et création du certificat certs/serveur.pem :
region$ openssl ca -config ../openssl.cnf -extensions server -out certs/serveur-cert.pem -infiles serveur-request.pem
Le certificat certs/serveur-cert.pem est alors renvoyé au serveur.
Note 1 : par défaut la clé serveur-key.pem générée sur le serveur est cryptée. Cela peut être problématique si elle doit être utilisée par un serveur qui doit démarrer automatiquement. Dans ce cas on peut vouloir obtenir une version non cryptée de la clé : openssl rsa -in serveur-key.pem -out serveur-clear.pem
Note 2 : pour un serveur SSL avec plusieurs noms possibles (cas d'un serveur web avec plusieurs VirtualHost sur une seule adresse IP), il faut positionner la variable d'environnement OPENSSL_ALT et de faire une requête avec les extensions alt_req :
serveur$ OPENSSL_ALT="DNS:www.site1.org,DNS:www.site2.org,DNS:www.site3.org" openssl req -new -key serveur-key.pem -out serveur-request.pem -config ../openssl.cnf -reqexts alt_req
Gestion des cRLs
fabrication du CAPath AUF
Transfert des données