Quand un site muni d’un certificat s’affiche « Non sécurisé », la page est servie en http, ou elle charge des images ou scripts en http, ce qu’on appelle du contenu mixte. Repérez ces ressources dans la Console du navigateur, passez leurs adresses en https, forcez la redirection http vers https, puis corrigez les adresses WordPress.
Le certificat ne protège que les échanges qui passent réellement par https. Il suffit d’une adresse tapée en http, d’une image appelée en http:// dans la page ou d’un réglage WordPress resté sur l’ancienne adresse pour que le navigateur retire le cadenas et affiche un avertissement. Le cas est fréquent juste après l’installation d’un certificat ou une migration.
Si le navigateur annonce plutôt une connexion non privée avec un code d’erreur de date, lisez le guide sur le certificat SSL expiré. Les étapes 1 et 2 sont à la portée de tout visiteur, les suivantes concernent le propriétaire du site.
Ouvrir la version https de l’adresse
Si vous visitez un site. Tapez vous-même https:// devant le nom du site. Si la page s’affiche avec un cadenas, le certificat fonctionne et c’est la redirection depuis http qui manque côté site. Si le navigateur refuse la version https, le problème se situe au niveau du certificat lui-même.
Lire le détail de l’avertissement
Si vous visitez un site. Cliquez sur l’icône à gauche de l’adresse : la fenêtre indique si la connexion est non sécurisée ou si la page contient des éléments non sécurisés. Notez la mention exacte, elle oriente les étapes suivantes. N’y saisissez ni mot de passe ni numéro de carte tant que le cadenas n’est pas revenu.
Repérer les ressources en http dans la Console
Si c’est votre site. Ouvrez la page concernée, puis les outils de développement avec F12. Dans l’onglet « Console », les ressources mixtes sont signalées par des messages du type « Mixed Content » avec l’adresse précise de chaque image, script ou feuille de style. L’onglet « Réseau » permet de filtrer les requêtes dont l’adresse commence par http://. Notez les domaines et les fichiers fautifs, ils se trouvent dans le thème, un widget, une extension ou le contenu des articles.
Passer les adresses internes en https
Si c’est votre site. Faites une sauvegarde des fichiers et de la base avant toute modification. Dans un thème ou un gabarit, remplacez les adresses http:// par https://, ou par une adresse relative au domaine. Pour du contenu stocké en base, WP-CLI sait remplacer une chaîne : wp search-replace 'http://exemple.fr' 'https://exemple.fr' --dry-run simule d’abord l’opération, sans rien modifier. Relancez la commande sans --dry-run seulement si le résultat vous convient. Une ressource hébergée chez un tiers qui ne propose pas https doit être remplacée ou hébergée chez vous.
Mettre à jour les adresses WordPress
Si c’est votre site. Dans WordPress, ouvrez Réglages puis Général et vérifiez que « Adresse web de WordPress » et « Adresse web du site » commencent par https://. Si le champ est grisé, les valeurs sont probablement fixées dans wp-config.php par les constantes WP_HOME et WP_SITEURL : modifiez-les à cet endroit. Les valeurs siteurl et home de la table des options peuvent aussi se lire avec wp option get siteurl. La documentation WordPress sur le changement d’adresse détaille les précautions.
Mettre en place la redirection de http vers https
Si c’est votre site. Sans redirection, les anciens liens et les saisies sans https:// restent en clair. Sur nginx, ajoutez un bloc d’écoute sur le port 80 qui renvoie return 301 https://$host$request_uri;. Sur Apache, utilisez une directive Redirect dans le virtual host du port 80 ou les règles RewriteEngine du .htaccess. Rechargez le serveur après avoir testé la configuration. Si le navigateur annonce ensuite une boucle, consultez le guide sur trop de redirections.
Vérifier le CDN, le proxy et les en-têtes
Si c’est votre site. Derrière un proxy ou un CDN, WordPress peut croire que la requête arrive en http et générer des liens en http, même si le visiteur est en https. Vérifiez le mode de chiffrement du CDN et que le serveur reçoit l’en-tête indiquant le protocole d’origine. Videz ensuite les caches de page, de plugin et du CDN, car ils conservent d’anciennes adresses.
Activer HSTS seulement une fois tout en https
Si c’est votre site. L’en-tête Strict-Transport-Security oblige le navigateur à n’utiliser que https pour le domaine, pendant la durée indiquée par max-age. Une erreur est difficile à rattraper, car les navigateurs mémorisent la consigne. Commencez avec une courte durée, ajoutez includeSubDomains seulement si chaque sous-domaine est en https, et n’utilisez pas preload sans avoir lu les conditions de la liste.
Questions fréquentes
Pourquoi mon site affiche-t-il « Non sécurisé » alors que j’ai installé un certificat ?
Le certificat est sans doute valide, mais la page est chargée en http ou appelle des ressources en http. Testez l’adresse en https:// puis cherchez les erreurs « Mixed Content » dans la Console. La redirection manquante et les adresses WordPress restées en http sont les causes les plus répandues.
Qu’est-ce que le contenu mixte ?
C’est une page chargée en https qui appelle des éléments en http : images, scripts, feuilles de style, iframes. Les navigateurs bloquent ou signalent ces éléments, car ils peuvent être modifiés en route. La page entière perd alors son cadenas ou fonctionne partiellement.
Le cadenas barré signifie-t-il que mon site est piraté ?
Non, pas en soi. Il décrit un défaut de chiffrement de la page, pas une intrusion. Si vous voyez en plus des redirections inconnues ou des pages que vous n’avez pas créées, consultez le guide sur la redirection malveillante.
Faut-il activer HSTS sur tous les sites ?
C’est une bonne protection pour un site entièrement servi en https, mais elle suppose que tout fonctionne déjà, sous-domaines compris. Testez avec une durée courte avant de l’allonger : retirer ensuite l’en-tête n’annule pas aussitôt la mémorisation faite par les navigateurs.
Sources
- Contenu mixte — MDN Web Docs
- Strict-Transport-Security — MDN Web Docs
- Changer l’adresse d’un site — WordPress.org
- HTTPS pour WordPress — WordPress.org