Résoudre les problèmes de certificat SSL et contenu mixte sur PrestaShop
Guide complet pour diagnostiquer et corriger les erreurs SSL, le contenu mixte (mixed content) et forcer le HTTPS sur votre boutique PrestaShop 1.7 et 8.x.
En bref : Le problème de certificat SSL "partiel" sur PrestaShop est causé par du contenu mixte : des ressources (images, CSS, JS) encore chargées en HTTP. La solution complète implique d'activer le SSL sur toutes les pages, de mettre à jour les URLs en base de données via des requêtes REPLACE, de corriger le thème et les modules, et d'ajouter le header upgrade-insecure-requests comme filet de sécurité.
Introduction
Vous venez d'installer un certificat SSL sur votre boutique PrestaShop, mais le cadenas vert n'apparaît pas sur toutes les pages ? Votre navigateur affiche un avertissement de "connexion partiellement chiffrée" ? Vous êtes face à un problème de contenu mixte (mixed content), l'un des écueils les plus fréquents lors du passage en HTTPS d'une boutique e-commerce.
Ce guide détaille les causes, le diagnostic et la résolution complète de ce problème, de PrestaShop 1.6 jusqu'à la version 8.x.
Comprendre le contenu mixte (Mixed Content)
Qu'est-ce que le contenu mixte ?
Lorsqu'une page est servie en HTTPS, toutes les ressources qu'elle charge doivent également être en HTTPS. Si une seule image, feuille CSS, fichier JavaScript ou police est chargée via HTTP, le navigateur considère la connexion comme "mixte".
Il existe deux types de contenu mixte :
- **Mixed Content passif** : images, vidéos, audio chargés en HTTP. Le navigateur les charge mais retire le cadenas sécurisé.
- **Mixed Content actif** : scripts JS, feuilles CSS, iframes, requêtes AJAX en HTTP. Les navigateurs modernes **bloquent purement et simplement** ces ressources, ce qui peut casser votre boutique.
Pourquoi le SSL semble fonctionner uniquement sur la page d'accueil ?
C'est un symptôme classique : la page d'accueil affiche le cadenas, mais les pages catégories, fiches produit ou tunnel de commande ne l'affichent pas. Cela se produit car :
- La page d'accueil charge moins de ressources externes
- Les pages produit incluent des images dont l'URL est stockée en dur en HTTP dans la base de données
- Certains modules injectent des ressources avec des URLs absolues en HTTP
- **Why No Padlock** : analyse page par page
- **JitBit SSL Checker** : crawler qui vérifie plusieurs pages
- L'onglet **Sécurité** des DevTools Chrome liste toutes les origines non sécurisées
- Allez dans **Paramètres de la boutique → Paramètres généraux**
- Activez **"Activer le SSL"**
- Activez **"Activer le SSL sur toutes les pages"** (pas uniquement les pages sensibles)
- Les modules de **réseaux sociaux** qui chargent des widgets en HTTP
- Les modules de **statistiques** ou **tracking** avec des URLs obsolètes
- Les modules de **paiement** — particulièrement critique pour la sécurité
- Les **sliders** et modules d'images qui stockent des URLs absolues
- Page d'accueil
- Une page catégorie
- Une fiche produit (avec images)
- Le tunnel de commande complet
- Les pages CMS (mentions légales, CGV)
- Mettre à jour le sitemap XML avec les URLs HTTPS
- Mettre à jour l'URL du site dans Google Search Console
- Vérifier que les redirections 301 sont bien en place
- Mettre à jour les liens canoniques (``)
Diagnostic complet du contenu mixte
Étape 1 : Utiliser les outils de développement du navigateur
Ouvrez la console de votre navigateur (F12) sur une page problématique. Les ressources mixtes sont signalées par des avertissements explicites :
Mixed Content: The page at 'https://www.maboutique.fr/produit'
was loaded over HTTPS, but requested an insecure image
'http://www.maboutique.fr/img/p/1/2/3/123.jpg'.
This content should also be served over HTTPS.
Notez chaque URL fautive — elles indiquent précisément les ressources à corriger.
Étape 2 : Scanner automatiquement avec un outil en ligne
Plusieurs outils gratuits scannent votre site pour détecter le contenu mixte :
Étape 3 : Vérifier la configuration PrestaShop
Dans le back-office, vérifiez que le SSL est correctement activé :
PrestaShop 1.7 / 8.x :
// Vérification en base de données
SELECT name, value FROM ps_configuration
WHERE name IN ('PS_SSL_ENABLED', 'PS_SSL_ENABLED_EVERYWHERE');
-- Les deux doivent être à 1
Corriger le contenu mixte : méthode complète
1. Mettre à jour les URLs dans la base de données
La cause principale du contenu mixte sur PrestaShop est la présence d'URLs absolues en http:// stockées dans la base de données (descriptions produit, pages CMS, etc.).
-- Sauvegarder la base AVANT toute modification !
-- Corriger les URLs dans les descriptions produit
UPDATE ps_product_lang
SET description = REPLACE(description, 'http://www.maboutique.fr', 'https://www.maboutique.fr'),
description_short = REPLACE(description_short, 'http://www.maboutique.fr', 'https://www.maboutique.fr');
-- Corriger les URLs dans les pages CMS
UPDATE ps_cms_lang
SET content = REPLACE(content, 'http://www.maboutique.fr', 'https://www.maboutique.fr');
-- Corriger les URLs dans les catégories
UPDATE ps_category_lang
SET description = REPLACE(description, 'http://www.maboutique.fr', 'https://www.maboutique.fr');
Attention : Remplacez
ps_par votre préfixe de table réel etwww.maboutique.frpar votre domaine.
2. Mettre à jour le fichier .htaccess
Forcez la redirection HTTP → HTTPS au niveau serveur. Dans votre .htaccess à la racine de PrestaShop :
# Redirection HTTP vers HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Sur PrestaShop 8.x, régénérez le .htaccess depuis le back-office après avoir activé le SSL pour que PrestaShop y insère ses propres règles de redirection.
3. Corriger les URLs dans le thème
Recherchez dans les fichiers de votre thème toute URL codée en dur :
# Trouver les URLs HTTP codées en dur dans le thème
grep -rn 'http://' themes/votre-theme/ --include='*.tpl' --include='*.css' --include='*.js'
Remplacez-les par des URLs relatives au protocole ou des URLs HTTPS :
<!-- Avant (problématique) -->
<img src="http://www.maboutique.fr/img/logo.png">
<!-- Après (protocole relatif) -->
<img src="//www.maboutique.fr/img/logo.png">
<!-- Ou mieux, URL relative -->
<img src="/img/logo.png">
4. Vérifier les modules tiers
Les modules sont une source fréquente de contenu mixte. Vérifiez :
# Scanner les modules pour des URLs HTTP
grep -rn 'http://' modules/ --include='*.tpl' --include='*.php' --include='*.js' | grep -v 'https://'
5. Configurer les headers de sécurité (PrestaShop 8.x)
Sur PrestaShop 8.x, ajoutez un Content-Security-Policy pour bloquer automatiquement le contenu mixte et forcer la mise à niveau :
# Dans .htaccess ou la configuration Nginx
Header always set Content-Security-Policy "upgrade-insecure-requests"
Cette directive demande au navigateur de transformer automatiquement les requêtes HTTP en HTTPS — un filet de sécurité efficace pendant la migration.
Vérification post-correction
Après les corrections, effectuez ces vérifications :
# Vérifier que le certificat est valide
curl -vI https://www.maboutique.fr 2>&1 | grep -E 'SSL|certificate|subject'
# Vérifier la redirection HTTP → HTTPS
curl -I http://www.maboutique.fr
# Doit retourner 301 avec Location: https://...
Naviguez ensuite sur les pages clés de votre boutique :
Points de vigilance supplémentaires
Le formulaire d'inscription
Lors du passage en HTTPS, testez systématiquement votre tunnel d'inscription. Un problème fréquent est la validation du code postal qui peut être mal configurée selon les pays activés. Vérifiez que le format attendu correspond bien aux pays que vous ciblez (5 chiffres pour la France, 4 pour la Belgique, etc.).
Les performances
Le HTTPS ajoute une légère surcharge liée au handshake TLS. Sur PrestaShop 8.x, activez le HTTP/2 (ou HTTP/3 si votre hébergeur le supporte) qui compense largement cette surcharge grâce au multiplexage des requêtes.
Le renouvellement du certificat
Si vous utilisez Let's Encrypt (gratuit et recommandé), le certificat expire tous les 90 jours. Configurez le renouvellement automatique :
# Tester le renouvellement
certbot renew --dry-run
# Vérifier la crontab de renouvellement
crontab -l | grep certbot
Impact SEO
Le passage en HTTPS est un signal de classement Google. Cependant, une migration mal gérée peut entraîner une perte de positionnement temporaire. Assurez-vous de :
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.