La génération de certificats ssl se fait auprès d'une autoritée de certification. C'est elle qui valide les informations pour générer un certificat qui correspond à votre domaine. Nous pouvons devenir autorité de certification (CA) à l'aide d'Openssl.



Etape 1: Installation d'openssl

root~# aptitude install openssl  // yum install openssl

Etape 2 : Configuration du CA avec openssl

Commencons par créer quelques répertoires pour nos certificats

  
root~# mkdir -p /etc/ssl/root-ca/{conf,private,public}
root~# chmod 400 /etc/ssl/root-ca/private
root~# cd /etc/ssl/root-ca

Modifions certaines options du fichier d'openssl

root~# vi /etc/ssl/openssl.cnf
[ req ]
default_bits            = 2048
default_keyfile         = /etc/ssl/root-ca/private/root.pem
 
[ root_ca_distinguished_name ]
countryName             = FR
stateOrProvinceName     = France
localityName            = Paris
0.organizationName      = Minitux Inc
commonName              = Minitux Inc Root CA
emailAddress            = blog@minitux.fr

Etape 3 : Générer les certificats CA

root~# openssl req -nodes -config /etc/ssl/openssl.cnf -days 1825 \
 -x509 -newkey rsa:1024 -out public/root.pem -outform PEM

Nous avons maintenant deux nouveaux fichiers :

- private/root.pem (clé privé)
- public/root.pem (clé public)

On peut lire le contenu de notre clé public à l'aide de cette commande

root~# openssl x509 -in public/root.pem -noout -text

Etape 4 : Générer une clé privé et un CSR (certificat signing request)

Nous allons maintenant générer une clé privé pour notre serveur

root~# openssl genrsa -des3 -out server.key 4096

Ensuite nous générons le fameux CSR qui contiendra nos informations

root~# openssl req -new -key server.key -out server.csr

Nous pouvons lire le contenu des fichiers générés à l'aide de ces commandes

root~# openssl rsa -noout -text -in server.key
root~# openssl req -noout -text -in server.csr

Etape 5 : Générer notre certificat chez notre CA

Nous allons générer un certificat valable 1 an

root~# openssl x509 -req -days 365 -in server.csr -CA public/public.pem 
 -CAkey private/root.pem -set_serial 01 -out server.crt

Toujours pour les curieux la commande pour lire le contenu de ce certificat :

root~# openssl x509 -noout -text -in server.crt

Etape 6 : Supprimer les mots de passes

Si vous souhaitez mettre ce certificat sur votre serveur apache, il est intéressant de supprimé les mots de passe pour que le serveur puisse redemarrer sans aucun prompt

 
root~#  openssl rsa -in server.key -out server.key.insecure

Vous pouvez ajouter votre clé public dans votre navigateur par exemple pour que les certificats générés par votre autorité de certification soit directement reconnu.

Quelques liens

Le site d'openssl
Les autorités de certifications