Avant de commencer, pour que tout le monde comprenne les mots que nous allons utiliser ici, référé vous à notre article qui vous explique ce qu’est le HTTPS, ce qu’est un certificat SSL, ses enjeux et ses impacts de nos jours en 2017.
Parmi nos conseils pour améliorer la sécurité d’un site web WordPress, il y a l’ajout d’un certificat SSL à votre site internet afin de pouvoir passer votre site du classique HTTP au HTTPS, qui est donc un protocole sécurisé.
Pour rappel voici la définition du terme « HTTPS » : Initiale d’HyperText Transfert Protocol Secure. Le HTTPS est un mode de sécurisation technique des données échangées entre le serveur visité (votre site web WordPress par exemple) et les internautes.
1. Première étape : Obtenir un certificat SSL
Il existe aujourd’hui de nombreux prestataires qui proposent des certificats SSL, les hébergeurs notamment tel que OVH, GoDaddy etc. Mais un nouvel acteur est entré en jeu et nous l’avons découvert durant l’année 2016 : Let’s Encrypt !
Cette organisation se définit comme « une autorité de certification ouverte, gratuite et automatisée ». Le projet de cette organisation est très simple : Le SSL pour tous !
Il existe 3 types de certificats SSL :
Le certificat DV (Domain Validation ou Validation de domaine en français)
Le certificat OV em>(Organisation Validation ou Validation de l’organisation en français)
Le certificat EV (Entreprise Validation ou Validation de l’entreprise en français)
Bien évidemment tous ces certificats ne se valent pas ! Et le certificat le plus sécurisé et le plus sûr est le certificat EV. En effet, en plus de vérifier le nom de domaine et d’en garantir la sécurité, il nécessite une vérification de l’entreprise. Cela permet d’être sûre à 100% que le site web sur lequel on se trouve est bel et bien la propriété de l’entreprise qu’il dit représenté.
Les certificats DV (très utilisés) et les certificats EV sont assez simples à différencier, cependant, concernant les certificats OV (validation de l’organisation), ils sont plus difficiles à distinguer car il ressemble, dans l’affichage, aux certificats DV
Voici un exemple de certificat DV (validation du domaine uniquement)
Voici un exemple de certificat EV (validation du domaine et de l’entreprise)
Notre agence étant en partenariat avec OVH, nous prenons 99% de noms de domaines de nos clients chez eux. Depuis quelque temps, OVH est en partenariat avec Let’s Encrypt et propose donc les certificats DV par défaut et gratuitement lors de l’achat d’un hébergement web.
Cela signifie que pour l’achat d’un hébergement web chez OVH, vous bénéficierez automatiquement d’un certificat SSL et vous pourrez donc passer votre site web WordPress en HTTPS 🙂
À vous de choisir votre prestataire, l’autorité de certificat que vous voulez pour votre site web et l’usage que vous allez en faire (site vitrine ou e-commerce).
2. Deuxième étape : Passer du HTTP au HTTPS sur WordPress
Après avoir choisi votre organisme de certification et une fois votre certificat validé et actif, il est désormais temps de changer les URLs de votre site web WordPress !
Sécuriser son interface d’administration WordPress
La sécurisation de l’administration WordPress est une fonctionnalité incluse au coeur de WordPress. Pour pouvoir donc sécuriser votre interface d’administration en HTTPS vous allez devoir éditer votre fichier « wp-config.php » qui se trouve généralement à la racine de votre installation.
À noter : Il est plus prudent de toujours faire une sauvegarde préalable du fichier que l’on souhaite modifier. On pourra le restaurer en cas de pépins.
Une fois votre fichier « wp-config.php » ouvert via un éditeur de fichier, ajoutez la ligne de code ci-dessous :
define('FORCE_SSL_ADMIN', true);
Une fois cette ligne ajoutée, vous pouvez sauvegarder votre modification et vous rendre dans votre administration WordPress. Vous constaterez qu’elle s’affiche désormais en HTTPS.
Afficher tout son site WordPress en HTTPS
2.1 Modifier les URLs dans l’administration
La méthode ci-dessous va nous permettre de rediriger tous notre trafic HTTP vers du HTTPS en utilisant le code 301 (qui correspond au déplacement permanent d’une URL).
Nous allons utiliser notre fichier .htaccess pour faire cela. Il faudra donc veiller que le module « mod_rewrite » est installé sur votre serveur (renseignez-vous auprès de votre hébergeur. Chez OVH, cela semble installé par défaut.)
Avant d’entrer dans le vif des modifications de notre fichier .htaccess, il va falloir se rendre dans l’administration de notre WordPress.
Une fois sur votre tableau de bord, rendez-vous dans « Réglages > Général » puis modifier les 2 adresses URLs écrites dans « Adresse web de WordPress (URL) » et « Adresse web du site (URL) » (cf. illustration ci-dessous) et ajoutez un « s » à vos anciens URLs HTTP.
Une fois cette modification faite, enregistrez-les et nous pourrons enfin passer à la modification de notre .htaccess. En effet, notre modification précédente donne l’instruction à WordPress d’utiliser HTTPS dans toutes les URLs mais n’empêche personne d’accéder aux URLs en HTTP. C’est le .htaccess qui fait se travaille.
2.2 Modifier le fichier .htaccess
Si vos permaliens ont été activés alors vous devriez déjà avoir un fichier .htaccess à la racine de votre installation WordPress. Si ce n’est pas le cas, il vous suffit de créer un fichier et de le nommer « .htaccess »
À noter : Les fichiers de type « .htaccess » sont des fichiers cachés par défaut. Si vous ne les voyez pas, voici une illustration pour les afficher avec l’explorateur de fichier FileZilla.
Pour les autres explorateurs, référez-vous à la documentation fournie par l’éditeur.
Si votre fichier .htaccess existe, voici ce qu’il devrait contenir de base :
# BEGIN WordPress RewriteEngine On RewriteBase /secure/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /secure/index.php [L] # END WordPress
Pour les sites sans les WWW
Ouvrez votre fichier .htaccess et ajoutez-y les lignes de codes suivantes :
# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L] # Redirection du www vers non-www en HTTPS RewriteCond %{HTTP_HOST} ^www\.monsite\.com [NC] RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]
Pour les sites avec les WWW
Ouvrez votre fichier .htaccess et ajoutez-y les lignes de codes suivantes :
# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L] # Redirection du non-www vers www en HTTPS RewriteCond %{HTTP_HOST} ^monsite.com [NC] RewriteRule ^(.*)$ https://www.monsite.com/$1 [R=301,L]
Attention : N’oubliez pas de remplacer « https://www.monsite.com/ » par votre vrai nom de domaine.
Vous n’avez désormais plus qu’à tester votre site ! Rendez-vous sur n’importe quelle URL en utilisant le HTTP, si vous êtes automatiquement redirigé vers l’adresse HTTPS c’est que tout fonctionne correctement 🙂 !
3. Comment gérer le Mixed Content et debugger les erreurs HTTPS ?
Après avoir passé votre site en HTTPS il peut arriver que certaines de vos pages présentes un point d’exclamation gris (ou cadenas jaune) plutôt que vert (cf. illustration ci-dessous)
En utilisant Google Chrome :
Cliquez sur ce point d’exclamation gris (ou cadenas jaune) comme sur l’illustration ci-dessous :
Puis cliquez sur « Détails » et rendez-vous sur l’onglet « Console » comme sur l’illustration suivante.
Dans cet onglet, on va pouvoir comprendre d’où proviennent nos erreurs HTTPS et notre fameux « Mixed Content ».
Dans l’exemple ci-dessus, l’image nommée « rss.png » est appelée en HTTP. Il faudra donc modifier cette URL pour appeler le fichier en HTTPS et l’erreur devrait être résolue 🙂
4. Et pourquoi pas une extension ?
Il est vrai que l’on pourrait utiliser une extension WordPress pour faire le boulot à notre place, mais ce n’est pas le genre de la maison 😉
Pourquoi ? En fait, pour plusieurs raisons ..
Installer une extension pour faire ce que l’on pourrait faire « simplement » n’est pas une très bonne idée car une extension doit être mise à jour au fil des mises à jour de WordPress. De plus, les extensions ont tendance à alourdir les sites web WordPress.. bon oui j’abuse, une extension qui gère le SSL n’est pas très lourde.
Une extension peut aussi contenir une ou plusieurs faille(s) de sécurité(s) ou générer des erreurs avec d’autres extensions par exemple.
Pour la petite anecdote, j’utilisais « WordPress HTTPS (SSL) » (cf. illustration ci-dessous) et je me suis retrouvé avec mon sitemap XML bloqué car l’extension que j’utilisais n’était plus à jour depuis un certain nombre d’années et générait donc une erreur.
Elle fonctionne sur certains sites, mais l’idéal est d’utiliser une extension à jour ou de le faire manuellement comme expliqué plus haut 🙂
Voici un exemple d’extension qui semble pas mal ! Je n’irais pas jusqu’à la conseiller mais à vous de voir si elle vous intéresse. Elle est compatible avec la version 4.9.5 de WordPress (la version actuelle donc).
En espérant que ce tutoriel vous aura été utile! N’hésitez pas à le partager autour de vous afin d’en faire bénéficier tout le monde.. et bien sûr vous pouvez noter cet article 🙂
Pour les plus téméraires d’entre vous et pour ceux qui veulent un article un peu plus technique que le mien, je vous recommande de jeter un oeil au guide de migration HTTP vers HTTPS que propose Kinsta !
Si vous souhaitez sécuriser votre site web WordPress, vous pouvez consulter notre service « Maintenance de site web WordPress ».