Contenu
Sécuriser son site web avec SSL
Vous voulez avoir un site web plus sécurisé ? vous espérez avec ça que votre site soit mieux classé? Il faut mettre en place un certificat SSL !
Je ne peux vous garantir la requête numéro une mais il est clair que votre site sera plus sécurisé. Il y a bien d’autres aspects que le paraitre plus sécurisé, comme le fait de vouloir mettre en place le moyen de paiement Stripe, qui exige que votre site soit sécurisé SSL.
il y a plusieurs niveaux de certificat SSL
Pour faire simple il y en a 3, pas au même prix bien sûr.
Certificat à validation de domaine
pour un nom de domaine, installation rapide, Niveau d’entrée.
Certificat à validation d’organisation
Délivré lorsque votre société est enregistré à la chambr de commerce, donc c’est plutôt destiné aux entreprise, les individuels ne sont pas concernés.
Certificat à validation étendue : le must mais le plus cher
prend 5 à 8 jours, contrôle de l’existence de l’entreprise à la chambre de commerce,contrôle Whois, 2 validations téléphonique (service administratif et service du personnel, c’est le seul certificat qui vous permet la belle barre verte (exemole : mozilla, paypal)
Procédure de mise en place d’un certificat SSL pour votre site web.
La validité d’un certificat SSL est en général de 1 an, mais vous pouvez renouveler pour des durée différente. Par exemple Let’sEncrypt (fournisseur de certificats SSL de niveau Domaine) fournit des certificat qui expirent au bout de 90 jours.
Ce qui suit suppose que vous ayez un accès SSH sur votre serveur.
Créez sur un CSR certificate Signing Request).
Avant qu vous puissiez acheter un certificat SSL, il vous faut créer un CSR pour votre serveur. C’est la clé privée qui va être générée et porte l’extension KEY, et aussi une requête de certificat que vous allez envoyer au vendeur de certificat SSL.
Que contient le CSR : c’est un fichier encodé qui contient les informations sur le type de chiffrage,ce fichier vous allez l’envoyer chez le vendeur de certificat SSL, qui après paiement va vous envoyer un jeu de fichier qui sont des clé d’encryption.
On crée un CSR par certificat SSL.
Commande pour générer un CSR :
openssl req -newkey rsa:2048 -nodes -sha256 -keyout www.votre-domaine.fr.key -out www.votre-domaine.fr.csr
Il faut répondre à quelques questions :
Country Name : code ISO, pour la France c’est FR, c’est l’adresse du siège de l’entreprise qui décide du code, pas l’extension de domaine
State or Province Name : Département pour la France
Locality Name : Ville
Organization Name : Nom de l’entreprise ou votre Nom si pour site personnel
Organization Unit Name : Département (Informatique, Marketing etc)
Common Name : (server host name) www.monsite.com
Challenge password : Ne rentrer rien pas de mot de passe
Optional Company Name : ne rien mettre sauf si besoin
B/ Installez les certificats SSL d’encryption
Prérequis : activer le module SSL d’Apache si ce n’est déjà fait, pour ce faire allez dans le fichier de configuration httpd.conf, cherchez la section LoadModule, décomemnter au besoin. Une méthode alternative est une commande shell :
$ a2enmod ssl
Les certificats SSL sont simplement des fichiers texte, avec une longue chaine de caractères. Elles peuvent avoir l’extension cer. Il y en a trois, un certificat SSL racine, un certificat SSL intermédiaire, et un certificat pour votre domaine.
Ensuite, il faut éditer votre fichier de configuration de serveur virtuel, sous Apache sous Debian, c’est httpd.conf qui doit inclure entre autre les fichiers default.conf et defaultSSL.conf, ces deux derniers fichiers doivent contenir les mêmes vhost (virtual host ou serveur virtuel), à la différence que dans defaultSSL.conf, ce sont les vhost qui écoutent sur les port 443, qui est de facto les port d’écoute des requêtes https.
Dans un premier temps vous allez recopier les vhost de default.conf vers defautlSSL.conf, et remplacer le port 80 par le port 443.
Apache doit écouter le prot 443, la directive se trouve dans httpd.conf :
Listen 443
Ensuite après la balise ouvrante VirtualHost, ajoutez les lignes suivantes :
# Activation du SSL SSLEngine On # Activation de tous les protocoles sécurisés (TLS v1.0, TLS v1.1 et TLS v1.2) tout en désactivant les protocoles non sécurisés (SSL v2 et v3) 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 # Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite SSLHonorCipherOrder on # Chemin vers le certificat SSL de votre nom de domaine SSLCertificateFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.cer" # Chemin vers la clé privée du certificat SSL de votre nom de domaine SSLCertificateKeyFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.key" # Chemin vers le certificat SSL racine, puis vers le certificat SSL intermédiaire. Attention : L'ordre est important. SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-racine.cer" SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-intermediaire.cer"
Indiquez le chemin vers les certificats SSL, respectez scrupuleusement l’ordre.
Pour aller plus loin : activer le HSTS
Pour obtenir une note A+ sur le benchmark de SSLLabs il faut activer le HSTS. Pour ce faire il faut activer le module header d’Apache avec la commande suivant ou dans le fichier httpd.conf :
$ a2enmod headers
Testez votre site en SSL !
Installer SSL sur son site n’est que le début, une fois le cerficaton en route, redémarrez le serveur, testez votre site web pour vous assurer que tout va bien. Le problème avec certains sites web est que les liens sont codés en « dur » en http, ceci ne vous offre pas la flexibilité de switcher de http en https. Dans ce cas il vous faudra remplacer un par un les http en https !