Accueil » Conseils & tutoriels sites internet » Tutos Prestashop » Prestashop : mise en place d’un certificat SSL (HTTPS) et correction des liens

Prestashop : mise en place d’un certificat SSL (HTTPS) et correction des liens

Disposer d’un certificat SSL (comprenez ici le fameux HTTPS avec le cadenas dans la barre d’URL de votre site) est à la fois un gage de sécurité et une norme qui tend à s’étendre sur tous les e-commerces francophones. Avec l’application Let’s Encrypt, il est désormais possible d’obtenir le sésame gratuitement, avec tout de même quelques manipulations à réaliser sur les sites.

Les moteurs de recherche en 2017 vont privilégier désormais les sites possédant ce certificat, et même Google Chrome signalera aux internautes une page non sécurisée (cliquez ici pour retrouver l’article de ZDNET). Le SSL devient de plus en plus incontournable.

Oui mais… Installer un SSL sur un Prestashop ne s’effectue pas en deux ou trois clics, encore moins si votre site est déjà en production sous un HTTP standard.

Voici donc comment en quelques étapes il est possible de corriger cela et d’arborer un petit cadenas vert dans l’URL de votre e-commerce.

Prérequis : accès FTP, accès PhpMyAdmin, un éditeur de code de type Sublime text ou Atom, accès au back-office de la boutique, SSL disponible chez l’hébergeur, la certitude que les modes de paiement fonctionneront avec une redirection HTTPS en 301

1/ Le SSL c’est quoi ?

SSL est un acronyme signifiant « Secure Socket Layer ». Il certifie l’échange des données entre le serveur sur lequel se trouve le site, et votre propre navigateur internet. Le but est par conséquent de sécuriser la connexion de manière à ce qu’aucun script malveillant ne puisse s’interposer. En 2017, autant dire qu’avec le nombre d’attaques que subissent les internautes, cela devient très important, et également rassurant pour tous.

Sur un Prestashop par exemple, vous pouvez bien imaginer que la page de commande demeure celle à privilégier lors de l’utilisation d’un tel certificat, car le client y renseignant ses données personnelles, c’est à vous e-commerçant de sécuriser le transfert de ces données (notez bien que vous n’êtes nullement responsable d’un éventuel malware qui serait sur l’ordinateur dudit client).

Historiquement, le SSL avait fait l’objet d’une faille de sécurité (HeartBleed), qui a très rapidement été corrigée (bien qu’elle aie impacté de très nombreux et très gros sites). Nous sommes donc à présent sous l’objet d’un certificat mettant en avant la sécurité de vos données et de celles qui transitent entre vos clients/visiteurs et votre site internet.

2/ Activation du SSL dans Prestashop

Attention cette procédure a été réalisée sur un Prestashop 1.6, elle peut différer selon la version. Prestashop demeure cependant très facile au niveau de cette procédure. Si d’aventure vous n’êtes pas au minimum sur une version 1.6, cliquez ici pour voir une procédure de mise à jour sans perte de données.

Passez tout d’abord votre site en maintenance, et ajoutez votre IP de manière à être en mesure de visualiser la boutique. Cela se passe dans l’administration via « Préférences » puis « Maintenance ».

Une fois la boutique en maintenance et que votre hébergeur a bien activé le SSL, rendez-vous dans « Préférences » puis « Générales » (si vous cliquez juste sur « Préférences » cela revient exactement au même).

Cliquez en premier lieu sur « Veuillez cliquer ici pour vérifier que votre boutique supporte le protocole HTTPS. »

Prestashop : mise en place d'un certificat SSL (HTTPS) et correction des liens 1

Une fois que la page s’est rechargée, cochez la case « Activer le SSL »

Prestashop : mise en place d'un certificat SSL (HTTPS) et correction des liens 2

Et enfin, forcez le HTTPS sur votre site (attention à certains modules de webservice qui malheureusement n’aiment pas ce protocole, tout comme les modules de paiement du type CM-CIC)

Prestashop : mise en place d'un certificat SSL (HTTPS) et correction des liens 3

Si votre Prestashop ne propose pas de forcer le SSL, voici le code à mettre en place dans le fichier .htaccess à la racine de votre site :

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Attention cela ajoute une redirection 301 (définitive) du HTTP vers le HTTPS. Ne prenez jamais à la légère le fichier htaccess, et retrouvez ici un tutoriel brillamment rédigé sur WebrankInfo (un site d’ailleurs à suivre très régulièrement). Cet article explique entre autres comment réaliser une telle redirection si vous utilisez Nginx au lieu d’Apache.

3/ Correction du thème

Vérifiez dans tous vos fichiers du thème que vous n’avez pas un code similaire à celui-ci :

{$link->getPageLink('cart.php')}

Cette ligne par exemple ne prend aucunement en charge le SSL, pas plus que celle-ci :

{$link->getPageLink('cart.php', false)}

Si vous repérez une ligne semblable à celles présentées ci-dessus remplacez-les par ceci :

{$link->getPageLink('cart.php',true)}

Le paramètre ‘true’ permet d’activer l’URL de façon sécurisée, et vérifiez bien partout que votre thème ne dispose pas de la variable $base_dir toute seule, comme on peut le rencontrer sur certains thèmes.

En effet, comme le précisent les variables Smarty de Prestashop, il existe une variable pour le SSL, que l’on peut même tester avec ceci :

{if isset($force_ssl) && $force_ssl}{$base_dir_ssl}{else}{$base_dir}{/if}

Ainsi nous testons proprement si le SSL est disponible et forcé, ce qui corrige automatiquement les liens de HTTP vers HTTPS. Ceci devrait systématiquement être en place sur tous les templates utilisant une variable de type $base_dir.

Afin de corriger tous ces éléments sur l’ensemble de votre dossier de thème, téléchargez-le depuis un client FTP, et sachez que depuis les logiciels Sublime Text ou Atom, il est possible d’effectuer un rechercher-remplacer sur tout un répertoire. Pourquoi s’en priver ? Faites juste bien attention à ne pas réécrire des liens, selon votre remplacement.

4/ Correction de la base de données

Il va falloir à présent rectifier toutes les URL en erreur dans la base de données. Plutôt que d’avoir à corriger l’intégralité des liens, et parce qu’il est possible que vous en ayez énormément, nous allons effectuer une requête SQL, à savoir que nous allons directement effectuer un rechercher-remplacer dans la base de données.

Ce qui signifie que vous devez absolument effectuer une sauvegarde saine de votre base de données !

Si vous ne connaissez pas le langage SQL, ou que vous avez peur à l’idée de modifier votre base de données, n’hésitez pas à regarder ce module de remplacement en database pour Prestashop qui effectuera la modification pour vous.

Une fois que votre sauvegarde est bien effectuée, démarrons.

Recherchez dans votre base de données http:///www.MonDomaine.tld. PhpMyAdmin vous ressortira le nom de toutes les tables qui disposent de cette information. Il va falloir toutes les corriger, plus précisément il va falloir corriger toutes les colonnes dans ces tables.

D’entrée, il est judicieux de corriger toutes les CMS, et tout le descriptif des produits (résumé et description). Ajoutons-y la table ps_configuration, ce qui nous donne quatre requêtes à effectuer une par une :

table ps_configuration

UPDATE ps_configuration SET value = REPLACE(value, 'http://www.MonDomaine.tld', 'https://www.MonDomaine.tld') WHERE INSTR(value, 'http://www.MonDomaine.tld') > 0;

table ps_product_lang (résumé des produits)

UPDATE ps_product_lang SET description_short = REPLACE(description_short, 'http://www.MonDomaine.tld', 'https://www.MonDomaine.tld') WHERE INSTR(description_short, 'http://www.MonDomaine.tld') > 0;

table ps_product_lang (description des produits)

UPDATE ps_product_lang SET description = REPLACE(description, 'http://www.MonDomaine.tld', 'https://www.MonDomaine.tld') WHERE INSTR(description, 'http://www.MonDomaine.tld') > 0;

table ps_cms_lang (contenu des CMS)

UPDATE ps_cms_lang SET content = REPLACE(content, 'http://www.MonDomaine.tld', 'https://www.MonDomaine.tld') WHERE INSTR(content, 'http://www.MonDomaine.tld') > 0;

Notez au passage que selon vos modules installés, il est possible que vous ayez d’autres tables à corriger, comme par exemple lorsque vous utiliser un système de diaporama (certains enregistrent les URL en dur dans la base de données, pas très malin…).

Selon le thème et les modules utilisés, il est possible que vous ayez davantage de tables à modifier. Repérez-les en effectuant une recherche SQL, vous saurez ainsi les tables et les colonnes à modifier.

5/ Vérification du bon fonctionnement du HTTPS sur toutes les pages du site

Désactivez le cache de votre site, forcez la recompilation, et videz intégralement votre cache navigateur, cookies inclus.

Prestashop : mise en place d'un certificat SSL (HTTPS) et correction des liens 4
Prestashop : mise en place d'un certificat SSL (HTTPS) et correction des liens 5

Rendez-vous sur la page d’accueil, et utilisez l’inspecteur de votre navigateur pour que la console vous précise quelles sont les URL non conformes au HTTPS.

L’erreur qui ressort (ici dans le cadre d’un formulaire non sécurisé) ressemble à ceci :

Mixed Content: The page at 'http://www.MonDomaine.tld/' was loaded over a secure connection, but contains a form which targets an insecure endpoint 'http://www.MonDomaine.tld/'.

Via la console (et si le cache de votre Prestashop est bien désactivé, surtout la compression HTML), vous allez pouvoir repérer quelle ligne comporte le lien non sécurisé, et par conséquent le retrouver dans vos fichiers ou votre base de données.

Pensez à vérifier toutes les pages, surtout les pages de commandes qui comportent des formulaires de connexion et des liens vers des systèmes de paiement.

Au final, le certificat SSL est une grosse plus-value pour votre site internet et pour de nombreuses raisons, mais considérez bien que sa mise en place est loin d’être une mince affaire lorsque vous êtes déjà en production sous couvert d’un simple HTTP.

Vous pouvez utiliser notre petit module de réécriture afin de gagner du temps, il a été développé pour vous aider (bien que de notre côté nous préférons effectuer la manipulation sans développement supplémentaire).

Prenez systématiquement des précautions, et demandez conseil à votre hébergeur qui saura vous orienter. Sinon, pensez à nous contacter !

Imprimer Imprimer
Suivre Cyssoo:

Développeur - formateur

Je cherche à display errors le monde, vous auriez pas la doc' ? Follow me on Twitter !

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.