Auto-signer son certificat SSL

De Korben Wiki
Aller à : navigation, rechercher

Introduction

Ce tutoriel a pour but de vous apprendre à auto-signer vos certificats SSL pour vos pages web.

Voir aussi les articles HTTPS et SSL/TLS et Certificats.

Pré-requis

  • Un serveur web administrable (Apache)
  • Une distribution Linux (Debian, Ubuntu, etc.)

Avertissement

Attention ! L'auto-signature des certificats SSL nécessite une acceptation de la part de l'utilisateur. En effet, sous Firefox, si ce n'est pas une organisation reconnue qui gère vos certificats, le navigateur vous mettra en garde et il vous faudra accepter le certificat. Ceci peut faire "peur" à certains utilisateurs.

Autorités de certification

Voici une liste non exhaustive d'organismes capables de gérer vos certificats officiellement.

Source : Wikipédia

Réalisation manuelle

Télécharger les logiciels requis

Pour pouvoir mener à bien notre tutoriel nous avons besoin des logiciels suivants :

Il faut pour commencer télécharger les dernières versions de ces logiciels :

  • 1. Créez un répertoire temporaire tel que /usr/src/ et placez-vous dessus grâce à la commande cd.
  • 2. Téléchargez les dernières versions des logiciels listés ci-dessus grâce à la commande
wget urldevotrefichier.tar.gz
  • 3. Il faut à présent extraire les fichiers de ces archives grâce à la commande :
tar -xzvf <votre_paquet>.tar.gz

Compiler les logiciels

La première chose à faire après avoir téléchargé et décompressé un paquet, il faut le compiler ! Pour ce faire nous devons nous rendre dans le répertoire temporaire crée précédemment et taper :

  • Apache
cd apache<votre_version>
./configure
  • OpenSSL

cd openssl-<votre_version>
sh config -fPIC
make
make install
  • MM de Ralf Engelschall

cd mm<votre_version>
./configure --disable-shared
make
make install
  • mod_ssl

cd mod_ssl-<votre_version>.tar.gz
./configure --with-apache=../apache_<votre_version>

Source : http://slacksite.com/apache/webserver.php

Réalisation automatisée

apt-get install apache2 libapache-mod-perl openssl-server php5 libapache2-mod-php5

Sous Debian et Ubuntu, il est très facile d'installer apache-ssl, l'installateur de paquet APT peut également nous générer automatiquement un certificat SSL. Voici la commande à taper dans votre shell :


apt-get update
apt-get install libapache-mod-ssl

Plusieurs paquets supplémentaires seront peut-être installés. L'installeur vous demande plusieurs paramètres pour le certificat SSL, entrez les données que vous voulez et finissez l'installation.

Normalement tout est bien configuré et vous pouvez déjà accéder en mode sécurisé à votre page de démarrage en tapant dans le navigateur https://Adresse_IP_de_votre_serveur

En théorie, seul le serveur Apache que vous venez d'installer tourne sur votre configuration, mais vous pouvez très bien faire tourner la version classique (apache) en plus de la version sécurisée (apache-ssl). Toutefois, sachez que comme la version classique, la version ssl peut très bien gérer les domaines (nous verrons cela plus loin). Inutile donc de surcharger votre système avec deux serveurs.

Ajout de domaines

Nous ajoutons la gestion de plusieurs domaines dans notre Apache sécurisé avec l'utilisation de virtualhost dans le fichier de configuration de apache (httpd.conf)

vi /etc/apache-ssl/httpd.conf

Nous n'allons pas, dans ce tutoriel, entrer en détail dans la gestion multi-domaine avec Apache. Rajoutez donc autant de directives VirtualHost que de domaines souhaités.

<VirtualHost www.votredomaine.com:443>
ServerAlias votredomaine.com www.votredomaine.com
DocumentRoot /var/www/dossier/
ServerName www.votredomaine.com
SSLEnable
</VirtualHost>

Nous configurons ici notre VirtualHost pour le port 443 (port par défaut du protocole https) en lui donnant le nom de domaine qu'il doit gérer, le répertoire racine du site (DocumentRoot), et la valeur que renvoi le serveur (ServerName).

La mention SSLEnable ou SSLDisable permet simplement d'indiquer si le SSL doit être actif ou non. En théorie, comme nous écoutons le port 443 pour ce VirtualHost, on a tout intérêt à mettre SSLEnable car sinon on aura droit à une jolie page introuvable.

Cette mention peut également se trouver en dehors d'un VirtualHost. On peut donc enlever le SSL dans la configuration globale et l'autoriser dans un VirtualHost. D'ailleurs nous vous conseillons de procéder ainsi.

Si vous voulez gérer un domaine normal, c'est à dire sans protocole sécurisé, vous devez d'abord indiquer à Apache d'écouter le port 80 en rajoutant la directive

Listen 80

Ensuite configurez un VirtualHost avec un port 80. Ainsi vous pouvez gérer les deux protocoles avec une seule configuration d'Apache et un seul serveur.

<VirtualHost _default_:80>
SSLDisable
</VirtualHost>


Un peu plus loin l'installeur d'Apache nous a créé une clé SSL valide un mois. Pour en refaire une autre, on utilise openssl qui a été installé en même temps qu'Apache.

On créé d'abord notre certificat, lorsque le prompt vous demande le Common Name, mettez le nom de votre certificat.

cd /etc/ssl
openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365

On crée ensuite dans le même répertoire une clé SSL pour Apache. Ici lorsque le prompt vous demande votre Common Name faites bien attention à mettre le nom de votre machine (ou localhost).

openssl req -new -config ./openssl.cnf -nodes -out ./apache-req.pem -keyout
./apache-key.pem

Ensuite on signe notre clé SSL avec notre certificat.

openssl x509 -req -in apache-req.pem -out apache-cert.pem -signkey apache-key.pem -CA
cacert.pem -CAkey private/cakey.pem -CAcreateserial -days 365

La commande ci-dessus génère donc une clé et un certificat pour une durée de 365 jours. Mais nous avons créé ici deux fichiers alors que nous en avions qu'un seul à l'installation. En fait, il suffit simplement de changer quelques paramètres dans le httpd.conf d'apache.

vi /etc/apache-ssl/httpd.conf

On change la ligne SSLCertificateFile avec notre nouveau certificat

SSLCertificateFile /etc/apache-ssl/apache.pem

On dé-commente la ligne SSLCertificateKeyFile et on y ajoute le chemin de notre clé.

SSLCertificateKeyFile /etc/apache-ssl/apache-key.pem

Comme d'habitude, on redémarre notre Apache

apache-sslctl graceful

Normalement si vous avez respecté la procédure, Apache doit redémarrer avec les nouveaux paramètres. Vérifiez bien dans /var/log/apache-ssl/error.log si c'est le cas.

Source : https://joloridi.net/wikini/wakka.php?wiki=DebianCertificatSSL

--- A finir par User:HIK3