Généralités système Linux

Openssl : Création de certificats et CA autosignés

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

apache_ssl





Introduction




Cet article décrit brièvement comment générer un certificat SSL et le mettre en oeuvre dans apache2.



Générer le certificat




Ici une démo avec mon nom de domaine, mais il faut adapter avec le vôtre :

Dans le dossier /etc/ssl on créé un dossier pour notre domaine :

Code BASH :
domaine=linuxtricks.fr
cd /etc/ssl
mkdir $domaine
cd $domaine


On crée la clé privée avec l'algorithme RSA 2048 bits.

Code BASH :
openssl genrsa -out $domaine.key 2048


Ensuite il faut générer un fichier de « demande de signature de certificat », en anglais CSR

Code BASH :
openssl req -new -key $domaine.key -out $domaine.csr


On répond à un certain nombre de questions.

Il faut bien mettre le nom du serveur tel qu'il est appelé de l'extérieur dans le champ « Common Name » (CN).

Ensuite, on génére le certificat signé au format x509 (ici pour 365jours auto-signé)

Code BASH :
openssl x509 -req -days 365 -in $domaine.csr -signkey $domaine.key -out $domaine.crt


Ce certificat n'est authentifié par aucune autorité, vous aurez donc un message d'avertissement quand vous vous connectez au serveur.

C'est le fichier linuxtricks.fr.crt qu'on ajoute au besoin dans les navigateurs internet pour ne pas accepter le certificat à chaque fois.


Ou au lieu d'auto-signer le certificat on peut envoyer le fichier CSR à une autorité de certification reconnue.



Éditer le "virtualhost" SSL dans apache




Exemple ici sur Gentoo, mais le fichier de configuration peut se trouver dans un autre fichier, comme /etc/httpd/conf.d/ssl.conf pour CentOS :

Code BASH :
vi /etc/apache2/vhosts.d/00_default_ssl_vhost.conf


Éditer les lignes

Code BASH :
        ServerName linuxtricks.fr
        SSLCertificateFile /etc/ssl/linuxtricks.fr/linuxtricks.fr.crt
        SSLCertificateKeyFile /etc/ssl/linuxtricks.fr/linuxtricks.fr.key




Éditer le "virtualhost" SSL dans NGINX




Exemple ici sur CentOS, mais le fichier de configuration peut se trouver dans un autre fichier :

Code BASH :
vi  /etc/nginx/conf.d/ssl.conf


Code BASH :
    ssl                  on;
    ssl_certificate      /etc/ssl/linuxtricks.fr/linuxtricks.fr.crt;
    ssl_certificate_key  /etc/ssl/linuxtricks.fr/linuxtricks.fr.key;