Site WordPress en https

Dans un article précédent, nous avons vu comment créer un certificat avec Let’s Encrypt et comment l’installer sur un reverse-proxy ou un serveur web Nginx, mais ce n’est pas tout à fait suffisant pour réaliser la migration d’un site WordPress https. Cet article vous présente donc les étapes complémentaires pour compléter la migration d’un site WordPress.

Installation de WordPress en https

Wordpress en https
WordPress en https

Je n’ai jamais réussi à installer WordPress en https directement. La méthode que je vous propose consiste donc à faire une installation classique en http, puis une fois l’installation terminée, de faire une migration en https.

Nous considérons donc que vous avez terminé l’installation de base en http. vous avez donc indiqué dans les « Réglages » l’URL du site et l’URL du blog en http et tout fonctionne correctement (accès au front et au back office). Je ne saurais trop vous conseiller de réaliser la migration en https avant d’installer la moindre extension ou le moindre thème. Cela évitera de laisser des traces de la configuration http dans la base de données au cas où une extension ou un thème seraient mal codés.

Toutefois, si vous n’avez pas pu faire cette migration directement et que vous êtes sur un vieux site http que vous souhaitez migrer en https, deux précautions s’imposent :

  • Rechercher des traces de l’URL complète en http dans les fichiers
  • Rechercher des traces de l’URL complète en http dans la base de données

Nous verrons ces deux opérations plus tard car d’autres opérations sont à effectuer en amont.

Installation de l’extension SSL Insecure Content Fixer

De nombreux problèmes liés au passage au protocole https sont liés aux contenus mixtes (mixed content). C’est-à-dire que certaines URL sont écrites en dur dans des feuilles de style ou dans le code, et restent en http après migration en http. Les navigateurs se méfient du contenu mixte (http/https) et le signalent à l’internaute. Cela peut vous coûter le petit cadenas vert à côté de la barre d’adresse ! Il faut donc faire le maximum pour éviter ce problème. Cependant, si vous utilisez des contenus présents sur d’autres sites au moyen d’iframes par exemple, vous n’aurez d’autre choix que de demander aux auteurs des pages sources de passer eux-mêmes en https pour que votre site ne délivre plus de contenu mixte.

Une extension qui permet de bien gérer une partie des problèmes de contenu mixte s’appelle SSL Insecure Content Fixer.

Installez et activez l’extension WordPress SSL Insecure Content Fixer.

Je vous conseille la configuration suivante :

  • Niveau de correction « contenu »
  • Correction extensions et thèmes spécifiques suivant ce que vous utilisez
  • Détection https par HTTP_X_FORWARDED_PROTO car rappelez-vous, c’est ce que nous utilisons au niveau du reverse-proxy NginX.

Changement de l’URL dans les réglages WordPress

Rendez-vous dans les réglages de WordPress et remplacez http par https dans l’URL du site et l’URL de WordPress. Pour rappel, l’URL du site est l’URL courte, celle sur laquelle vous allez communiquer, alors que celle de WordPress est l’URL complète jusque dans le dossier wordpress.

A partir de cette modification, vous aurez sans doute des difficultés à revenir en arrière sans aller modifier des valeurs directement dans la base de données. Une dernière vérification de la configuration du site web ou du reverse-proxy s’impose sans doute à ce moment !

Si tout se passe bien, vous allez pouvoir réaliser la redirection du http vers le https au niveau du reverse-proxy.

Modification du wp-config.php

Pour que WordPress fonctionne bien avec le reverse-proxy en https, j’ai dû ajouter les lignes suivantes à mon fichier de configuration wp-config.php à la racine de wordpress :

/**
* Handle SSL reverse proxy
*/
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
    $_SERVER['HTTPS']='on';
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}

Configuration du reverse proxy

Je vous renvoie à l’article précédent sur cette question qui devrait répondre à l’ensemble de vos questions sur ce sujet.

Let’s Encrypt, reverse-proxy NginX, https

Rechercher l’URL en http dans les fichiers du site

Le plus simple pour trouver des traces de l’URL en http dans les fichiers du site est de se rendre dans le répertoire contenant les fichiers sur le serveur web, puis de lancer un grep récursif dans toutes l’arborescence avec l’URL en http de votre site.

Par exemple pour ce site :

$ cd /var/www/html/w3/
$ grep -R http://w3.nonsenz.org *

Cette commande permet de localiser tous les fichiers qui contiennent la chaîne de caractères http://w3.nonsenz.org et donc de réaliser les modifications si elles sont pertinentes. Notez que s’il y a des traces dans le cache, cela n’a aucune importance dans un premier temps, il suffira de vider le cache pour enlever toute trace de l’ancienne URL.

Rechercher l’URL en http dans la base de données

Le plus simple pour effectuer cette opération consiste à faire un export de la base dans un fichier texte non compressé (dump sql) et de rechercher la chaîne de caractères dans l’export.

Dans l’exemple de ce site, cela pourrait donner ceci :

$ mysqldump -h oscar.nonsenz.lan -u root w3mysqlbddname > w3mysqlBDD.sql
$ grep http://w3.nonsenz.org w3mysqlBDD.sql

On fait donc un dump de la base dans le fichier w3mysqlBDD.sql et on recherche la chaîne de caractères http://w3.nonsenz.org dans le fichier. Si on trouve des occurrences, je vous rappelle à toutes fins utiles la commande Vi de substitution de chaînes de caractères :

:%s/http\:\/\/w3\.nonsenz\.org/https\:\/\/w3\.nonsenz\.org/g

Cette commande remplacera les occurrences de l’url en http par l’url en https dans tout le document.

Il reste ensuite à réimporter la base de données modifiée.

$ mysql -h oscar.nonsenz.lan -u root w3mysqlbddname < w3mysqlBDD.sql

Une méthode alternative consiste à utiliser wp-cli avec sa fonction « search and replace » pour mettre à jour la base de données, comme expliqué ici :
wp-cli search and replace

Mise à jour de Google Analytics

N’oubliez pas de remplacer le protocole http par https dans tous les sites web tiers ou outils de webmasters en ligne qui supervisent votre site. C’est le cas en particulier pour Google Analytics, ou encore pour www.downnotifier.com.

N’hésitez pas à m’indiquer tout problème que vous pourriez avoir en utilisant ce tutoriel.

Laisser un commentaire