Un certificat couvre tout le site : un cadenas qui disparaît sur une seule page n'est donc jamais le certificat. Cette page charge au moins une chose en http tout nu, et c'est pour cela que le navigateur déclasse l'indicateur.
Le trouver en un seul endroit
Ouvrez la console sur cette page. L'avertissement de contenu mixte nomme l'URL exacte. C'est tout le diagnostic - le reste consiste à décider d'où vient cette URL.
Ou le trouver depuis le serveur
curl -sS https://yourdomain.com/that-page | grep -oE 'http://[^"[:space:]]+' | sort -u | head -20
D'où cela vient d'habitude
- Une image ou un contenu intégré collé dans le contenu il y a des années avec une adresse http complète.
- Un thème ou une extension qui construit une URL absolue à partir d'une option enregistrée.
- Un réglage d'adresse du site encore enregistré en http.
- Un widget tiers - une carte, une boîte de discussion, une police - servi en http.
SELECT ID, post_title FROM wp_posts
WHERE post_content LIKE '%http://yourdomain.com%' LIMIT 20;
SELECT option_name FROM wp_options WHERE option_value LIKE '%http://yourdomain.com%';
Corriger le contenu, pas le symptôme
Réécrivez les liens http enregistrés en https - ou mieux, en un chemin sans hôte du tout, pour que le même contenu marche en préproduction et en production.
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'http://yourdomain.com', 'https://yourdomain.com')
WHERE post_content LIKE '%http://yourdomain.com%';
Sauvegardez la base avant cet UPDATE, et lancez d'abord le SELECT pour savoir combien de lignes devraient changer. Un REPLACE qui touche dix fois plus de lignes que prévu est un motif qui était trop large.
Le tableau complet, redirections et en-têtes compris, se trouve dans Le contenu mixte après le passage à HTTPS.