Tout d'abord, sachez que si vous achetez votre certificat SSL chez Wistee.fr, un administrateur système vous aidera gratuitement et sur simple demande, à installer le certificat SSL sur votre serveur... Il vous montrera par TeamViewer comment est-ce qu'il configure votre serveur "dans les règles de l'art" et vous donnera toutes les explications utiles pour partager ses connaissances avec vous... De plus, les tarifs de Wistee sont très interessants (jusqu'à -45% des tarifs Public) Profitez-en !
Vous devez préalablement avoir installé Apache 2 avec le module mod_ssl. Nous vous conseillons également d'activer le module headers (pour le HSTS).
Activer le module SSL :
a2enmod ssl
Activer le module headers (recommandé pour activer le HSTS, nous verrons de quoi il s'agit à la fin du tutoriel)
a2enmod headers
Redémarrer Apache :
service apache2 restart
Création du répertoire qui contiendra le certificat SSL :
mkdir /etc/ssl/votre-domaine-fr/
Puis uploadez y votre certificat SSL, votre clé privée ainsi que le certificat intermédiaire et racine, en hormonisant les noms (pour éviter des erreurs) :
Pour cela, exécutez par SSH la commande ci-dessous, qui va vous indiquer quel processus écoute le port 443 (Apache, Nginx ...) :
netstat -tanpu | grep "LISTEN" | grep "443"
Si cette commande ne vous retourne rien : Votre Apache ne doit probablement pas écouter le port 443, vérifions :
grep -R "Listen" /etc/apache2
En l'absence de "Listen 443", c'est qu'effectivement Apache n'écoute pas le port 443 / HTTPS. Editez le fichier qui contient le "Listen 80", et ajoutez cette configuration :
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Redémarrer Apache
service apache2 restart
Puis vérifiez à nouveau qu'Apache écoute désormais le port 443 :
netstat -tanpu | grep "LISTEN" | grep "443"
Si cette commande vous retourne un résultat : Vous pouvez poursuivre l'installation du certificat SSL sur Apache 2
En l'absence de résultat : Contactez votre revendeur de certificat SSL... Ou contactez-nous au 03 44 02 02 15
Si l'adresse à sécuriser est déjà accessible via le protocole HTTP et que vous souhaitez la rendre accessible en HTTPS, il est recommandé de dupliquer son VirtualHost afin d'avoir une configuration d'Apache identique sur les deux protocoles ("http" et "https").
Se déplacer dans le dossier contenant les VirtualHost d'Apache :
cd /etc/apache2/sites-available
Lister les fichiers présents dans ce répertoire :
ls -la
Apache peut être configuré avec ou sans la directive ServerName, qui permet de faire fonctionner plusieurs noms d'hôte sur une même adresse IP / serveur.
Il vous faut trouver le fichier de configuration contenant le VirtualHost de l'adresse que vous souhaitez sécuriser (si elle est déjà accessible sur le protocole HTTP) :
Soit votre serveur utilise la directive ServerName, vous devriez pouvoir effectuer une recherche sur le nom de domaine de votre site :
grep -R "votre-adresse-deja-accessible-en-http.fr" /etc/apache2
Si vous n'obtenez pas de résultat, votre Apache n'utilise pas la directive ServerName. Vous devez trouver manuellement le fichier contenant le VirtualHost.
Une fois le fichier trouvé, nous allons le dupliquer pour conserver la base de configuration (généralement les fichiers se trouvent dans /etc/apache2/sites-available/ :
cp nom-du-vhost.conf nom-du-vhost-ssl.conf
Commencez par remplacer le port associé à ce VirtualHost : <VirtualHost *:443> au lieu de <VirtualHost *:80>
Ajoutez les directives ci-dessous dans le VirtualHost, mais en dehors de toute section Directory.
# On active le SSL
SSLEngine On
# On active tous les protocoles (TLS v1.0, TLS v1.1 et TLS v1.2), mais on désactive SSL v2 et v3 (obsolètes et remplacés par TLS)
SSLProtocol All -SSLv3 -SSLv2
# On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente d'un !)
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
# On demande au navigateur de sélectionner une méthode de chiffrement en respectant l'ordre envoyée par le serveur (HIGH uniquement)
SSLHonorCipherOrder on
# On renseigne le chemin vers le certificat SSL de l'adresse à sécuriser
SSLCertificateFile "/etc/ssl/votre-domaine-fr/www-votre-domaine-fr.cer"
# On renseigne le chemin vers la clée privée correspondant au certificat SSL de l'adresse à sécuriser
SSLCertificateKeyFile "/etc/ssl/votre-domaine-fr/www-votre-domaine-fr.key"
# On renseigne le chemin vers le certificat SSL racine, puis vers le(s) certificat(s) SSL intermédiaire(s).
# Si vous disposez de plusieurs certificats intermédiaires, vous pouvez ajouter d'autres directives SSLCACertificateFile.
SSLCACertificateFile "/etc/ssl/votre-domaine-fr/certificat-racine.cer"
SSLCACertificateFile "/etc/ssl/votre-domaine-fr/certificat-intermediaire.cer"
Si vous souhaitez sécuriser l'ensemble de votre site en SSL, nous vous conseillons d'activer le HSTS par l'ajout de cette ligne :
Header always set Strict-Transport-Security "max-age=15768000"
Le HTTP Strict Transport Security (HSTS) permet d'indiquer au navigateur du client qu'il doit communiquer avec le serveur uniquement de manière sécurisée.
Enfin, activez le VirtualHost que vous venez de configurer puis rechargez la configuration d'Apache :
Activer le VirtualHost :
a2ensite nom-du-vhost-ssl
# Pour désactiver le vhost si vous avez commis une erreur de configuration :
# Executez : a2dissite nom-du-vhost-ssl
Recharger la configuration d'Apache :
service apache2 reload
N'oubliez pas de tester la configuration SSL de votre serveur sur "SSLLabs.com". Sans le HSTS, vous devriez obtenir la note "A", et avec le HSTS : "A+" :