Créer son certificat auto-signé

Écrit par fdgeek
4 minutes
Créer son certificat auto-signé

Lorsque l'on possède un serveur et que l'on veut sécuriser un minimum les données que l'on fait transiter vers certains services installés (exemple: un service de cloud privé comme Owncloud), il est intéressant de paramétrer le VirtualHost afin qu'il écoute sur le port 443 (protocole HTTPS) réservé au trafic Web dit "sécurisé ou crypté".
D'autre part, afin que ce cryptage puisse s'effectuer correctement, il est nécessaire d'utiliser ce que l'on appelle un certificat de sécurité (ou certificat numérique) pour que les navigateurs internets utilisés puissent identifier notre serveur et assurer l'encodage des données.
Ces certificats sont normalement signés par une autorité de confiance (ou autorité de certification) qui atteste de leur fiabilité et ils sont généralement payants.

Dans notre cas, pour un usage privé et amateur dans le cadre d'un auto-hébergement, nous allons voir comment paramétrer le VirtualHost  d'Apache et générer un certificat gratuit communément appelé "certificat auto-signé".

Premièrement, éditons notre fichier VirtualHost avec la commande suivante:

nano /etc/apache2/sites-enabled/votrenomdedomaine.fr.conf

Puis modifions-le de la manière suivante :

<VirtualHost *:443>
DocumentRoot /www/votrenomdedomaine.fr
ServerName www.votrenomdedomaine.fr
 

Rajoutons ensuite les directives concernant le certificat auto-signé :

# Activation du cryptage SSL et déclaration du certificat et de la clé de cryptage :

SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/ssl/certs/moncertificat.crt
SSLCertificateKeyFile /etc/ssl/private/moncertificat.key

Voici maintenant le procédure pour générer le certificat:

openssl genrsa -out /etc/ssl/private/moncertificat.key 2048

Ensuite, on demande un certificat à partir de cette clé privée:

openssl req -new -key /etc/ssl/private/moncertificat.key -out /etc/ssl/certs/moncertificat.csr

Puis on construit notre certificat auto-signé à partir des deux éléments précédents:

NB*: Durant cette phase, il faut répondre à différentes questions concernant votre situation (nom de domaine, pays, ville...)

openssl x509 -req -days 365 -in /etc/ssl/certs/moncertificat.csr -signkey /etc/ssl/private/moncertificat.key -out /etc/ssl/certs/moncertificat.crt

Et pour finir, on active le mode SSL  et on redémarre notre serveur Apache avec les commandes suivantes:

# Activation du mode SSL:

a2enmod ssl

# Redémarrage du serveur Apache:
/etc/init.d/apache2 restart

# ou autre commande de redémarrage du serveur Apache:
service apache2 restart

Et voilà, désormais, vous pouvez vous connecter à votre service hébergé sur l'adresse https://votrenomdedemaine.fr

La seule petite contrainte sera d'ajouter manuellement une exception de sécurité dans votre navigateur, car s'agissant d'un certificat auto-signé, les navigateurs internet ne connaissent pas cette autorité de confiance mais le cryptage, lui est bien réel.