Certificates creation

OpenSSL est un outil très puissant permettant de gérer des certificats, que ce soit leur création, leur signature ou leur révocation.

Création d’une autorité de certification

Dans un environnement d’entreprise, il peut être intéressant de créer une autorité de certification qui sera installée sur tous les postes et ainsi pouvoir signer ses propres certificats sans passer par une autorité de certification racine reconnue (et économiser quelques deniers).

Dans un premier temps on créée la clef privée de notre autorité (minimum 2048 bits, 4096 bits recommandés)

openssl genrsa -out ca.key 4096

Quelque chose de similaire apparaîtra à l’écran:

Generating RSA private key, 4096 bit long modulus
..............++
......................................................................++
e is 65537 (0x10001)

Ensuite on créée le certificat racine à partie de cette clef:

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

OpenSSL vous demande ensuite quelques informations pour le certificat, remplissez les avec soin si elles sont publiques.

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]:FR
State or Province Name (full name) [Some-State]:IDF
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:UXP
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:*.unix-experience.fr
Email Address []:hostmaster@unix-experience.fr

La valeurs -days indique la validé du certificat. Indiquez au minimum 10 ans (3650 jours) pour plus de confort (une clef plus robuste serait mieux dans 10 ans, afin de rester au maximum sécurisé comparé à la vitesse d’évolution du déchiffrement).

Création d’un certificat et signature par l’autorité

Tout d’abord on génère notre clef privée

openssl genrsa -out mycert.key 4096

Puis on fait fait notre demande:

openssl req -new -key mycert.key -out mycert.csr

Et on remplit les champs administratifs:

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]:FR
State or Province Name (full name) [Some-State]:IDF
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:UNIX-Experience
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:myserver.unix-experience.fr
Email Address []:hostmaster@unix-experience.fr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Enfin on signe le certificat avec notre autorité:

openssl x509 -req -days 3650 -in mycert.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out mycert.crt

Attention: veillez à ce que l’option -days soit inférieure ou égale à celle du CA. Il faut incrémenter le serial à chaque nouveau certificat généré.

Certificat auto-signé sans autorité

Pour créer un certificat auto-signé sans passer par une autorité tierce, il suffit de taper la commande suivante:

openssl req -x509 -new -out mycert.crt -keyout mycert.key -days 3650 -nodes

Renseignez ensuite les champs demandés par OpenSSL