Attention: cet article date du 25 janvier 2018
Ce qu'il contient est peut être encore valable...
... ou complètement obsolète!
Le protocole HTTPS étant devenu une quasi obligation, il m’a paru utile de faire un petit tuto des étapes à effectuer pour migrer un site existant (sous WordPress) d’une version HTTP à une version HTTPS…
Pour ce faire, rien de mieux qu’un cas pratique que nous allons suivre étape par étape.
Et donc, le site http://www.richardcarlier.com
va devenir, au fil de votre lecture https://richardcarlier.com
. J’en profite pour supprimer le www qui ne sert, quand on y pense, pas à grand chose…
A partir de janvier 2017, Google a annoncé qu’il commencera à marquer comme non sécurisé les sites qui n’utilisent pas le protocole HTTPS. Ce qui se traduit par des dégradations dans le référencement des sites, et des alertes dans les navigateurs…
Si la motivation est théoriquement bonne (sécuriser le web), la conséquence est que les propriétaires de site(s) se doivent de migrer leur(s) site(s) actuel(s). Donc de passer du temps, voir dépenser quelques euros pour le faire.
Comme c’est pour notre bien (ou, disons, que nous ne pourrons pas y couper), allons-y…
Ajoutons que certains aspects de cette procédure sont techniques, lisez bien tout (surtout le court passage sur les sauvegardes), et assurez vous d’avoir tout compris avant de vous lancer…
Pour obtenir un certificat HTTPS, vous avez le choix:
Si le certificat EV est le meilleur, il est plus cher (99,99 € HT/an chez OVH par exemple) mais indispensable si vous faites du e-commerce. Le OV ne sera qu’à 49,99 € HT/an (toujours chez OVH) peut se justifier pour une société.
Par contre, si vous n’avez qu’un blog perso, ou pas les moyens (car il faut bien sûr multiplier cette somme pour chaque site que vous possédez), le DV est un bon choix (il est souvent gratuit, à condition d’avoir un hébergeur qui supporte le Let’s Encrypt). Solution gratuite, certes, mais il faut penser à l’activer (sinon, rapprochez vous de votre hébergeur)
Pour la suite de ce tuto, nous supposons que vous avez un certificat HTTPS actif.
Quelques manipulations vont agir en profondeur dans votre WordPress, et modifier la base de données.
Avant de commencer, faire des sauvegardes est crucial.
Il est également intéressant de faire un petit nettoyage du site, pour accélérer les traitements (à faire avant la sauvegarde, tant qu’à faire), par exemple vider les corbeilles…
Ménage, optimisation: wp-optimize
A faire de temps à autre…
Faire des sauvegardes, toujours utile updraftplus
On peut aussi planifier les sauvegardes à intervalle régulier…
Le premier fichier a modifier est le fichier .htaccess
, qui va donner des directives à Apache (le serveur web).
Nous allons effectuer deux changements (le deuxième étant facultatif):
Ajoutons donc ces quelques lignes:
# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://richardcarlier.com/$1 [R=301,L] # Redirection du www vers non-www en HTTPS RewriteCond %{HTTP_HOST} ^www\.richardcarlier\.com [NC] RewriteRule ^(.*)$ https://richardcarlier.com/$1 [R=301,L]
Remplacez bien sûr le nom richardcarlier par votre domaine, et le .com par votre extension…
ATTENTION: à ce stade, le WordPress risque de ne pas se comporter correctement (provisoirement – il est possible d’attendre la fin de l’étape suivante pour mettre en ligne ce fichier).
Dans la base de données, il est fait référence à de nombreux endroits à l’adresse de votre site (les options de WordPress, les permaliens, les liens internes…) qui, toutes, pointent vers la version http.
La première option consiste à aller dans le menu Réglage > Général, et à modifier l’adresse du site.
Mais cette solution peut ne pas suffire. Si c’est le cas, il faudra parcourir toutes les tables de la base pour changer partout… Travail, disons le, impossible sans outil adhoc. Mon conseil, passez directement par l’outil en question.
Le plus simple et efficace que j’ai trouvé, se nomme sobrement Database Search and Replace Script in PHP…
Attention, ce script est dangereux si vous l’utilisez mal. Vous constaterez d’ailleurs que vous ne pourrez le télécharger qu’après avoir coché les cases prouvant que vous avez connaissance de ce danger (relatif, si vous avez fait vos sauvegardes).
Bref: une fois téléchargé, copié dans un dossier secret à la racine de votre site (disons, NoMoreSecret dans notre cas) les trois fichiers index.php, srdb.class.php et srdb.cli.php
Et rendez vous ensuite à l’adresse secrète
http://www.richardcarlier.com/NoMoreSecret/
Face à l’écran, vous n’aurez qu’à remplir les deux premiers champs.
Dans le premier (replace) mettez l’url de votre site avant, sans / à la fin
http://www.richardcarlier.com
Dans le second (with) le site après, sans / à la fin
https://richardcarlier.com
Si vous avez plusieurs sites sur la même base de données, faites « select Tables » et sélectionner toutes les tables qui commencent par votre préfixe de tables (voir le fichier wp-config.php en cas de doute)
Nous faisons ensuite dry run, pour voir si cela se comporte normalement (on le fait pour de faux).
Et si oui, live run pour tout remplacer dans votre base de données (là, c’est fait…).
Ne reste plus qu’à supprimer le dossier NoMoreSecret…
A priori, à ce stade, votre site est devenu sécurisé, avec un joli cadenas vert.
Il est possible cependant que cela nécessite quelques réglages supplémentaires:
define('FORCE_SSL_ADMIN', true);
D’autres méthodes existent, de plus en plus faciles à trouver sur Google. Notons:
Et bien sûr, pour votre prochain WordPress, pensez à le mettre en HTTPS… dès l’installation!
Personnellement, comme Bruno Tritsch, je suis passé par le plugin Really Simple SSL qui porte très bien son nom : simple, rapide, nickel !