Aller au contenu
Accueil / Passer un site WordPress ancien en HTTPS

Passer un site WordPress ancien en HTTPS

Cela faisait longtemps que j’avais repéré la manière de passer un site existant de http à https. Contrairement à un site neuf, il y a un certain nombre de manipulations à réaliser pour éradiquer les http résiduels, notamment dans la base de données (mixed contents et duplications). Et ça peut se révéler très chronophage, surtout quand le CMS tourne depuis dix ans, comme c’est le cas du site où vous vous trouvez, infodocbib.net, ouvert en 2010.

Le confinement m’a donné l’occasion de faire le nécessaire pour obtenir le fameux petit cadenas vert :

Le https fera plus sérieux sur mon portfolio comme sur mon CV… Mais pas que :

Avant de commencer, ayez en tête ceci : les compteurs de vos boutons de partage seront irrémédiablement perdus, sauf à utiliser L’extension premium Social Warfare. Vous pensez que le certificat HTTPS est plus important? Alors allons-y ! 😉

Sommaire :

1. Se procurer un certificat SSL

C’est le plus facile. Il suffit de se laisser guider par l’interface de notre hébergeur. OVH fourni même un tuto pour commander puis activer un certificat SSL.

Web > Hébergement > [Votre site] > Informations générales > Configuration : c’est juste en dessous du choix de la version de PHP.

J’ai opté pour la version gratuite Let’s Encrypt, fourni par la plupart des hébergeurs. Une fois le certificat obtenu, il faut l’activer dans l’onglet « Multisite ». Tout est très bien expliqué dans la documentation d’OVH :

↑ — Revenir au sommaire

2. Les choses à faire absolument après l’activation du HTTPS

Une fois que le certificat est actif sur votre nom de domaine, c’est là que les choses se corsent. Avec un site neuf, on entre directement https partout où c’est nécessaire pendant sa création et le tour est joué. Avec un site pré-existant qui a fonctionné parfois des années en http, il faut mettre à jour toute une série d’éléments. Pour ne rien oublier, je me suis appuyé sur l’article de WPMarmite consacré au sujet, que je gardais sous le coude depuis sa publication. J’ai suivi la doc OVH en parallèle :

Attention, toutes les extensions ne sont pas bonnes à installer :

↑ — Revenir au sommaire

2.1. Tout rediriger vers le site en HTTPS

Si on pourra ensuite tout changer sur le site lui-même, on n’aura jamais la main sur tous les accès extérieurs qui pointent vers nous. Il faut donc mettre en place une redirection 301. Sans quoi, Les moteurs de recherche, Google en tête vont croire à du contenu dupliqué, accessible à la fois en http et en https. Et Google a horreur du contenu dupliqué. Pour cela, il suffit d’ajouter le script suivant au début de votre fichier .htaccess , qui se trouve à la racine de votre site :

# Redirection vers HTTPS
RewriteCond %{SERVER_PORT} ^80$ [OR]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]

# Redirection du www vers non-www00a31a en HTTPS
RewriteCond %{HTTP_HOST} ^www\.monsite\.com [NC]
RewriteRule ^(.*)$ https://monsite.com/$1 [R=301,L]

Il existe des variantes selon que vous utilisiez le www ou pas.

Il est ensuite fortement recommandé d’utiliser un outils de vérification pour vous assurer que les redirections se font correctement. Par exempe Why No Padlock?

Si vous obtenez ceci, vous pouvez passer à la suite

↑ — Revenir au sommaire

2.2. Remplacer les URL en HTTP

C’est maintenant le moment de mettre à jour toutes les URL en HTTP de votre site vers HTTPS. WordPress étant un CMS qui génère ses pages à partir d’une base de données, c’est dans celle-ci que vous allez opérer. Alex de WPMarmite fournit un script pour ce faire.

Pour ma part, j’ai opté pour des requêtes SQL dans le phpmyadmin associé à mon site (https://phpmyadmin.ovh.net/).

Entrez vos identifiants, sélectionnez votre base de données et allez dans l’onglet SQL

Ces requêtes sont les mêmes que celles qu’on utilise quand on transfère un site en local vers un serveur chez l’hébergeur (et vice-versa pour les sauvegardes).

# Changer l'URL du site
UPDATE wp_options
SET option_value = REPLACE(option_value, 'ancienneUrlSite', 'nouvelleUrlSite')
WHERE option_name = 'home'
OR option_name = 'siteurl';

# Changer l'URL des GUID
UPDATE wp_posts
SET guid = REPLACE (guid, 'ancienneUrlSite', 'nouvelleUrlSite');

# Changer l'URL des médias dans les articles et pages
UPDATE wp_posts
SET post_content = REPLACE (post_content, 'ancienneUrlSite', 'nouvelleUrlSite');

# Changer l'URL des données meta
UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, 'ancienneUrlSite', 'nouvelleUrlSite');

Outre les « votresite.com« , ne faites pas comme moi et n’oubliez pas de transposer aussi les en-têtes de tables, qui ne sont pas nécessairement en « wp- » (il même recommandé qu’ils ne le soient pas, c’est une question de sécurité)

↑ — Revenir au sommaire

2.3. Vérifier les ressources chargées par le thème : les mixed content

Parfois, il arrive que le thème charge toujours des fichiers (CSS, JS ou autre) en HTTP au lieu de HTTPS. On appelle ça les contenus mixtes (mixed content). À qui la faute ? À l’auteur du thème (ou la vôtre si vous avez bricolé votre thème enfant n’importe comment). Là pas de mystère, si c’est votre cas, il faudra mettre les mains dans le code de vos fichiers de thème, en vous aidant de l’inspecteur de code de votre navigateur, onglet Console.

Bon courage !

WPMarmite propose de contourner le problème avec une extension : SSL Insecure Content Fixer.

Quand à moi, mon thème était correctement écrit et Why No Padlock?, cité plus haut, m’avait déjà dit que je n’avais aucun mixed content :

Cependant, j’avais toujours des erreurs dans le navigateur : il me trouvait encore des occurrences en http, alors que j’étais sûr d’avoir tout remplacé. J’ai fini par comprendre que ces occurrences venaient du cache de mon site. Avoir un cache de son site est très bon pour le SEO (il existe un grand choix d’extensions qui font cela très bien), mais on a tendance à l’oublier une fois paramétré. Je suis donc allé purger le cache généré par WordPress, et le cadenas tant attendu est enfin apparu.

↑ — Revenir au sommaire

2.4. Forcer le HTTPS dans l’administration

Code dans le fichier wp-config.php : inutile pour mon cas, la manip du début dans .htaccess s’étant révélée suffisante.

2.5. Mettre à jour le fichier robots.txt

Ajouter un « s » à l’adresse du sitemap de votre site.

2.6. Tester votre certificat SSL/TLS

J’y reviendrai plus tard. Entrez votre nom de domaine ici et attendez le résultat : https://www.ssllabs.com/ssltest/

↑ — Revenir au sommaire

3. Mettre à jour la nouvelle adresse de votre site partout où c’est possible

Votre site est comme un nouveau site avec son protocole HTTPS. Il faut donc le faire savoir à tous vos outils de mesure (Xiti, Statcounter, Matomo, etc, selon votre choix), ainsi que partout où le nom de votre site apparaît.

Si Google ne vous rebute pas, il faut ajouter une propriété dans Google Analytics et une dans Google Search Console puis lier les deux ensemble. Ne pas oublier de fournir une sitemaps avec toutes les adresses en https. J’en ai profité pour faire du ménage dans les deux outils : tous mes comptes et leurs propriétés sont maintenant d’équerre.

Si Google Analytics est une première pour vous, n’hésitez pas à aller voir ici :

Dans la foulée j’ai fait du nettoyage et quelques réglages d’optimisation SEO. Sur Google PageSpeed Insights, le site obtient maintenant respectivement 99% pour les mobiles et 100% pour les ordinateurs et tablettes.

↑ — Revenir au sommaire

4. Ce qui me resterait à régler : la version obsolète de TLS

J’ai eu une mauvaise surprise quand j’ai testé mon SSL sur https://www.ssllabs.com/ssltest/ (point 2.6 ci-dessus)

Seulement un B ??

A vrai dire, le problème apparaissait déjà dans Why No Padlock? (points 2.1 et 2.3 ci-dessus)

Comme on vient de le voir, cela n’empêche absolument mon site de fonctionner et même de très bien fonctionner selon Google PageSpeed Insights. Les choses seraient différentes s’il s’agissait d’un site marchand. Les versions TLS 1.0 et 1.1 sont en effet considérées comme obsolètes. Il faut une version 1.2 ou 1.3 pour pouvoir faire tourner une solution de paiement comme Paypal.

Mon environnement d’exécution est « TLS1.2 compatible ». Ça me fait une belle jambe !

Je comprends mieux le message que m’envoie Filezilla depuis 2018, chaque fois que je veux faire du FTP sur mon site :

Ça non plus, ça n’empêche pas le FTP de fonctionner, mais c’est un peu limite pour la sécurité.

Comme les paramètres pour le TLS se règlent sur le serveur et que j’ai une formule d’hébergement en serveur partagé, je ne peux rien faire. C’est étonnant de la part de OVH de ne pas être à la page sur leurs versions d’applications de cryptage SSL/TSL. Je me demande si ça vaut le coup de lancer un ticket pour ça.

↑ — Revenir au début

PS : Cet article est le premier que j’écris avec Gutenberg sur infodocbib.net. Je me suis fait la main sur un autre site auparavant. Merci le confinement 😉 !

Vous aimerez aussi :

2 commentaires sur “Passer un site WordPress ancien en HTTPS”

  1. Retour de ping : Migrer Wordpress - Tutoriel détaillé | InfoDocBib - Architecte de l'information

  2. Retour de ping : Bagad Elven : 20 ans sur la toile - Architecte de l'information

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *