Modifications entre les versions 1 et 14 (s'étendant sur 13 versions)
Version 1 à la date du 2008-02-25 00:04:29
Taille: 3514
Éditeur: ThomasNoël
Commentaire: ça a l'air bon pour la CA racine... reste 98712983 étapes à franchir ;)
Version 14 à la date du 2008-02-27 10:23:02
Taille: 5111
Éditeur: ThomasNoël
Commentaire: ça sera surtout une page "pour mémoire", de toute façon, une fois la PKI en place
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
Fichier openssl.cnf modèle : [[attachment:openssl.cnf]] ## page was copied from Projet/PKI/NotesDeThomas
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) : [[attachment:openssl.cnf]]
Ligne 7: Ligne 13:
$ 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 15:

 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 19: Ligne 17:
$ 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 40: Ligne 35:
Adresse e-mail [rpv@auf.org]: Adresse electronique (email) [rpv@auf.org]:
Ligne 42: Ligne 37:
 1. Résultats
== Vérification des résultats ==

Examen du certificat produit (vérification dates et extensions) :
Ligne 44: Ligne 42:
$ ls
ca-cert.pem ca-key.pem certs crlnumber index.txt keys newcerts openssl.cnf requests serial
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 47: Ligne 45:
 1. La clé privée est bien encryptée :
= Création d'une AC régionale =

 1. Préparation
Ligne 49: Ligne 50:
$ cat ca-key.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2ECD333F18F369EB
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
Ligne 54: Ligne 59:
hsGEs99W6Rll5+x2WJlkcoeMpMXihgFaeKErvT/UWor/sJuMkLAZsnP1sRyd/vPf '''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 ca-req-BAO.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`.

/* vérifications ... */

= Emission de certificats =

== Certificat pour un 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 -text -config ../openssl.cnf
Enter pass phrase for serveur-key.pem:
Ligne 56: Ligne 78:
DoO4h8lbMXwA6TtOC9uklFghpAmPQpbaYJ8IQMD+YMM=
-----END RSA PRIVATE KEY-----
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 59: Ligne 86:
 1. Examen du certificat produit (vérification dates et extensions) : 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` :
Ligne 61: Ligne 90:
$ 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$ openssl ca -config ../openssl.cnf -in serveur-request.pem -extensions server -out certs/serveur-cert.pem
}}}
Ligne 89: Ligne 93:
            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-----
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 le préciser lors de la demande de certificat. Pour cela, positionner la variable d'environnement `OPENSSL_ALT` et utiliser 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 -text -config ../openssl.cnf -reqexts alt_req
Ligne 101: Ligne 101:

== Client ==

Même procédure. La distinction a lieu au niveau de l'autorité de certification, qui choisira l'extension `client`.

= Gestion des cRLs =

= fabrication du CAPath AUF =

/* grmmbll va encore falloir réviser là */

= 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... ça ne sera sans doute pas moi qui rédigera ça ;) */
/* surtout que ce ne sera sans doute pas pareil suivant les régions... ;-) */

Lectures :

Fichier openssl.cnf modèle (en cours d'écriture) : openssl.cnf

Création d'une AC racine

  1. Préparation
    racine$ mkdir racine; cd racine; mkdir certs newcerts ; echo 01 > serial ; echo 01 > crlnumber ; touch index.txt .rand 
  2. 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:
  3. 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]:

Vérification des résultats

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

  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é
  2. Etablissement de la demande de certificat
    region$ openssl req -new -key ca-key.pem -out ca-request.pem -text -config ../openssl.cnf 
  3. 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 -config ../openssl.cnf -in ca-req-BAO.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.

Emission de certificats

Certificat pour un 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 -text -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 -in serveur-request.pem -extensions server -out certs/serveur-cert.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 le préciser lors de la demande de certificat. Pour cela, positionner la variable d'environnement OPENSSL_ALT et utiliser 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 -text -config ../openssl.cnf -reqexts alt_req

Client

Même procédure. La distinction a lieu au niveau de l'autorité de certification, qui choisira l'extension client.

Gestion des cRLs

fabrication du CAPath AUF

Transfert des données

Projet/PKI/Archives/PKIOpenSSL/CréationDesAutorités (dernière édition le 2008-10-14 09:26:15 par ThomasNoël)