Création d’une Autorité de Certification
Petit aide mémoire pour la création d’une autorité de certification avec OpenSSL.
Motivation
Pour des serveurs, nous devons utiliser 3 certificats différents (mail et web). Pour cette raison, nous avons choisi de créer une autorité de certification (CA en anglais) qui va signer tous les certificat de nos systèmes. L’avantage au niveau des clients est qu’il suffit d’installer un certificat (une seule fois).
Normalement une CA doit être sur un élément inviolable (facilement) afin que personne ne puisse l’utiliser à de mauvaises fins au dépend de votre serviteur.
Préparation de l’environnement de la CA
Le répertoire de travail est /root/certificate/domaine.ch pour tout ce qui est en relation avec la CA du domaine domaine.ch
$ cd $CA_DIR
$ mkdir certs newcerts private crl csr
$ echo 01 > serial
$ :> index.txt
Création du jeu de clef pour la CA
$ openssl req -new -x509 -days 3650 -keyout private/cakey.pem -out cacert.pem
$ chmod 600 private/cakey.pem
cacert.pem est le certificat de notre nouvelle CA. Il faut donc le mettre un endroit publique atteignable afin qu’il puisse être téléchargé et installé. Il convient de changer l’extension en .crt pour qu’il soit interprété correctement.
Création du certificat de serveur
Pour créer un certificate sign request:
$ openssl req -new -keyout newkey.pem -out newreq.pem -days 360
Using configuration from /usr/lib/ssl/openssl.cnf
Generating a 1024 bit RSA private key
..........++++++
........................++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase:
Verifying password - 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.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]: domaine
Organizational Unit Name (eg, section) []:DSI
Common Name (eg, YOUR name) []: domaine.ch
Email Address []: email@domaine.ch
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Pour un certificat de serveur web, ce qui est très important est le Common Name, il doit être le nom du serveur. Par exemple, on peut mettre domaine.ch ou secure.domaine.ch.
Le mot de passe pourra être supprimé par la suite en lançant la commande suivante (ce n’est pas une bonne idée d’un point de vue de sécurité, mais sinon il faut être là chaque fois que le serveur qui utilise le certificat redémarre):
$ openssl rsa -in newkey.pem -out serverkey.pem $ chmod 400 serverkey.pem
Il est important de changer les permissions du nouveau fichier (clé secrète associée au certificat): il n’est plus protégé par le mot de passe.
Signature du certificat
$ openssl ca -config openssl.cnf -out server_cert.pem -infiles csr/server_req.pem
Il faut, pour que cela fonctionne faire une copie locale du fichier openssl.cnf (généralement trouvable dans le répertoire /usr/lib/ssl/openssl.cnf.
TODO MODIFICATIONS DE OPENSSL.CNF