Comment et pourquoi sécuriser son site PrestaShop ?

Comment et pourquoi sécuriser son site PrestaShop ?

Qu'est ce que la sécurisation ?

Lorsqu’on nous demande le développement d’un site qu’il soit d’e-commerce ou pas, nous conseillons vivement de le sécuriser, de l’encrypter. Ou dit autrement d’avoir un petit cadenas vert avec un protocole https au lieu de http. Pourquoi est-ce nécessaire :

  • Cela permet à l’internaute d’être sûr qu’il est sur le bon site (et éviter le phishing)

  • Cela permet d’éviter le vol de mots de passetéléchargement

  • Cela empêche que les données soient lues et/ou modifiées dans la communication

La sécurisation est réalisée par une autorité de certification qui va principalement authentifier le site ainsi que la société ou le particulier responsable, et fournir un certificat permettant d’encrypter toutes les données qui transiterons sur Internet vers et à partir de ce site.

Comment commander un certificat ?

Plusieurs types de certificats sont disponibles, en fonction des besoins :

  • un simple certificat de base permettant de ne crypter que sa boutique (par exemple https://my_shop.com)

  • un certificat “wildcard” qui lui permettra de crypter sa boutique, mais aussi d’autres services comme son site vitrine ou son serveur mail (https://my_site.my_shop.com et https://webmail.my_shop.com)

  • un certificat “multi-URL” qui lui permettra de crypter tout ce qui se trouve derrière tous les noms de domaine qu’il détient

  • une option possible pour les trois précédentes : voir devant le https en vert un petit encart vert indiquant une entreprise certificative garantissant la qualité du certificat.

Les prix de ces certificats sont croissants selon les 4 cas ci-dessus, mais varient aussi en fonction des services annexes inclus (reconnaissance, assurance, automatisation …) et du niveau de validation effectué par l’autorité de certification avant la délivrance du certificat.

La procédure pour obtenir le certificat débute par la génération d’un CSR (Certificat Signing Request). La manière de réaliser cela dépend des serveurs (Apache, NGinx, IIS …). Cette étape est importante puisque c’est à ce moment qu’on introduit les données relatives à la société et aux domaines à certifier. Ces données se retrouveront dans le certificat (qui sera signé) et qui permettront au surfeur de vérifier l’authenticité du site.

Ces informations envoyées, l’autorité va fournir le certificat, souvent sous la forme d’un petit fichier .cert. Elle fournira aussi la chaine de certificats permettant à tout browser e bien authentifier le certificat final. Cette étape peut prendre plusieurs jours en fonction des données que vous fournirez, ou du degré de vérification que souhaite réaliser l’instance qui délivrera le fameux certificat.

Comment installer son certificat ?

Pour activer le cryptage, vous devez :

  • paramétrer votre serveur web : pour cela, il faut au minimum que le module SSL soit activé, que le serveur écoute sur le port 443, et qu’un VirtualHost soit configuré pour écouter ce port, avec un lien vers les deux fichiers certificats. Par exemple :

LoadModule ssl_module modules/mod_ssl.so

Listen 443

VirtualHost *:443

ServerName www.example.com

SSLEngine on

SSLCertificateFile "/path/to/www.example.com.cert"

SSLCertificateKeyFile "/path/to/www.example.com.key"

VirtualHost

Notez que nous avons pris ici l’exemple d’un serveur Apache, chaque serveur a sa propre configuration.

  • paramétrer votre Prestashop : pour cela, rendez-vous dans le menu “Préférences/SEO & URL”, et vérifiez que votr domaine SSL est correctement configuré. Ensuite, rendez-vous dans Préférences -> Paramètres Généraux et dans Activer le SSL cliquez sur :”Cliquez ici pour utiliser le protocole HTTPS avant d’activer le mode SSL.” Une page s’ouvrira avec votre site en HTTPS. Retournez dans Préférences -> Paramètres Généraux et mettre sur OUI : “Activer le SSL” et “Forcer l’utilisation de SSL pour toutes les pages”

  • Si vous aviez déjà un bon positionnement SEO avant d’activer le SSL, n’oubliez pas de “créer des 301” qui redirigent chacune de vos pages en HTTP vers l’identique en HTTPS.

RewriteCond %{HTTP_HOST} ^www\.(.*)

RewriteRule ^.*$ https://%1/$1 [R=301,L]

Ce code est spécifique à Apache, on peut retrouver dans cet article les codes pour les autres serveurs.

Notes complémentaires

Pour un poste développeur en local, vous avez la possibilité de vous créer un certificat autosigné qui vous permettra de tester la configuration, la seule différence étant que vous aurez dans la barre de votre navigateur un petit cadenas barré en rouge, car votre certificat n’est pas reconnu par une autorité certificative.

Pour clôturer ce POST, mentionnons l’initiative LetsEncrypt qui fournit des certificats gratuitement et qui a le vent en poupe. Tout est réalisé par des API’, c’est donc plutôt à destination des techniciens, mais cette solution préfigure le futur de la sécurisation des sites en SSL. OVH a d’ailleurs déjà mis ce qu’il fallait en place comme automatisation pour obtenir des certificats gratuits pour tous ses serveurs mutualisés.

Plus d'articles