C’est le sujet brûlant du moment : après une campagne de communication réussie, Google a fini par imposer sa loi. Et aujourd’hui, tout le monde veut passer son site en https. Mais, concrètement, comment ça se passe ? C’est ce qu’on va regarder dans ce petit tutoriel…
Le principe général du passage de http vers https
Quand un navigateur télécharge une page Web, il télécharge son code source, ainsi que les éléments qui la composent (JavaScript, feuille de style, image, typographie, vidéo etc.). Tous ces éléments sont servis par un serveur de pages, tels qu’apache ou IIS, et sont acheminées vers le navigateur par « un tuyau » qu’on appelle tout simplement un port.
Tout ce qui arrive en http est envoyé via le port 80. Par contre, tout ce qui passe par le protocole https est envoyé par le port 443. Ici, http et https sont un protocole identique (HyperText transfert protocole et HyperText Transfert Protocole Secure).
Pour pouvoir migrer votre site vers https, vous aurez donc besoin de faire plusieurs choses :
- Installer un certificat SSL sur votre serveur
- Modifier votre code source pour transformer tout ce qui est http en https
- Mettre en place une redirection sur votre serveur, pour que tous ce qui pointe vers la version http de votre site soit redirigé vers la version https
Et c’est tout ! Ça n’est pas plus compliqué que ça. Du coup, dans notre premier exemple sur la vidéo, on s’occupe d’abord d’un site statique, qui n’est composé que de code HTML et d’éléments importés dans le navigateur (JavaScript, CSS, image etc.).
Dans la seconde partie de la vidéo, on gère ça sur un système de gestion de contenu, ou la tâche peut-être un peu plus complexe.
Migrer un site statique vers https
Pour migrer un site statique de http vers https, ça peut se faire très rapidement. Tout d’abord, téléchargez l’intégralité de votre site via ftp. Ouvrez ensuite un éditeur tel que Notepad ++, et utilisez la fonction « rechercher dans tous les fichiers d’un dossier ».
Ici, on va chercher toutes les occurrences de « http://www.domaine.com » et les remplacer par « https://www.domaine.com ». C’est simple et radical : plus rien ne sera importé dans votre code source en http.
Gérer la redirection 301 via le htaccess de votre serveur
Dernière étape de cette migration pour un site statique : on va mettre en place une redirection 301, qui redirigera les liens et les visiteurs vers la version https de votre site si d’aventure ils tapaient http://www.votredomaine.com
Pour cela, il suffit d’ajouter les lignes suivantes dans votre fichier htaccess
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
Évidemment, il faudra remplacer exemple.com par votre nom de domaine… Là, c’est la méthode la plus simple via htaccess, mais on pourrait très bien gérer ça en PHP ou même directement dans le virtual host.
Pour un CMS tel que WordPress, PrestaShop etc.
C’est exactement le même principe ! Sauf que, dans ce cas-là, le contenu des pages est dans une base de données, il n’est pas inscrit « en dur » sur des fichiers. On va donc procéder à un vieux chercher-remplacer directement dans la base, mais pas sans prendre plusieurs précautions…
Récupérer sa base de données
On va commencer par aller sur PhpMyAdmin, pour télécharger la base de données sur laquelle tourne votre CMS. Dans notre exemple, on le fait sur WordPress, mais la manip marche également avec PrestaShop, Drupal etc.
D’abord, on exporte notre base de données. Pour les options, vous pouvez compresser la base avant de la télécharger, ou bien la télécharger tel quel au format SQL.
Décompressez l’archive si vous avez opté pour un format compressé, ou bien ouvrez directement le fichier SQL à l’aide de Notepad ++.
Changer « http » en « https » dans le fichier sql
Ensuite, même punition que pour notre site statique, sauf qu’ici, on va chercher sur un seul fichier, celui qu’on vient d’ouvrir.
On fait donc « Rechercher : http://www.exemple.com »
Et « Remplacer par : https://www.exemple.com »
Et c’est tout ! Ce n’est pas plus compliqué que ça. Mais comme on est un peu parano, on va enregistrer notre fichier avec un nouveau nom, par exemple « wordpress2.sql »
Pourquoi on fait ça ? Eh bien, simplement, parce qu’on joue la sécurité. Si on a fait une erreur quelque part, par exemple une faute de frappe, et qu’on travaille sur un site en production, c’est la catastrophe ! Passer de http à https, c’est une manip invasive, brutale, qu’on ne doit pas prendre à la légère ! Si vous en avez la possibilité, faites-le sur un serveur de développement, et pas en direct sur votre serveur de production.
Bon, en vérité, c’est aussi que, dans le tutoriel vidéo, on bosse sans toucher aux paramètres avancés pour purger les tables de la base (si on réimporte en direct), donc, en jouant la sécurité, ici, j’évite de trop vous embrouiller avec des choses inutiles.
Cette nouvelle base que l’on vient d’enregistrer, on va l’installer sur notre PhpMyAdmin, avec son nouveau nom, sans toucher à l’ancienne base. Et ensuite, il suffira de reconnecter votre système de gestion de contenu (dans notre exemple, toujours WordPress) à la nouvelle base de données.
Importez le fichier modifié dans une nouvelle base de donnée
On va donc créer une nouvelle base de données, puis, on va importer notre fichier SQL dedans. On clique sur la base fraichement créée, puis on va dans l’onglet « importer »
Chargez votre fichier sur le serveur, puis cliquez sur « Exécuter ».
Une fois la base créée et remplie, on va lui assigner un nouvel utilisateur (qui ne pourra toucher qu’à cette base, et à rien d’autre). Pour ça, on se rend dans la section « privilèges ».
Un petit clic sur « Ajouter un utilisateur » … Et on remplit les champs comme indiqué (attention, choisissez un mot de passe sécurisé, un nom un peu compliqué pour votre utilisateur, et pour la section « client », ça dépend de votre configuration, il faudra peut-être demander à votre hébergeur… Très probablement, ce sera « localhost », mais il vaut mieux en être sûr. Au pire, regardez sur le profil de l’utilisateur de votre ancienne base, ou dans wp-config.php si vous êtes sur WP).
Il n’y a plus qu’à modifier le fichier de configuration de la connexion à la base de données, et c’est presque fini ! Pour Wordpress, c’est dans wp-config.php que ça se passe, à la racine de votre site, pour PrestaShop, c’est dans /config/settings.inc.php etc. là, il faut connaitre un tout petit peu votre CMS pour savoir où les infos de connexion se trouvent.
Modifiez les champs pour mettre les nouveaux identifiants de connexion (nom de la base, nom de l’utilisateur, mot de passe de l’utilisateur, et adresse du serveur SQL).
Vous pouvez désormais vous rendre sur votre espace d’administration, en https SVP, et vérifier que vous avez le bon nom de site dans le menu réglages/réglages généraux :
Ici, pas besoin de corriger quoi que ce soit, car le nom du site “http://www.fifou.me” a été remplacé par “https://www.fifou.me” quand on a fait la manip sur la base de données.
Plus qu’à mettre une 301 dans le htaccess, comme pour le site statique, et c’est terminé !
Là, c’était la méthode « hardcore », qui est très bien parce qu’elle vous montre qu’en fin de compte, ça se fait assez facilement.
Migrer de http vers https grâce à un plugin
Pour WordPress, vous pouvez très bien faire tout ça avec deux plugins. Le premier, pour exporter votre base de données, le second pour mettre en place la redirection 301.
Dans notre exemple sur la vidéo, on utilise WP Migrate DB, qui est aussi utilisable pour migrer vers un autre nom de domaine. Niveau configuration, c’est simplissime, l’image parle d’elle-même !
Et le module, ici, il fait quoi ? Bah, oui, ce qu’on a fait à la main en tout premier lieu. En plus rapide. Enregistrez le fichier de base de données. Ensuite, importez votre fichier dans une nouvelle base de données, toujours sur PhpMyAdmin.
Pour les plus téméraires, vous pouvez même remplacer tout en direct, sur la base de production, à l’arrache. Mais je ne vous le conseille pas, parce qu’au moindre problème, c’est la memerde. Donc je déconseille ! Ou alors faites un backup auparavant.
Mais même là, c’est invasif comme procédure, et si vous n’avez pas l’habitude de ce type de manip, je vous le déconseille (je vous l’ai dit trois fois)…
Pour gérer la 301, on peut utiliser plusieurs modules :
Personnellement, j’ai un nette préférence pour iTheme Security, qui prend aussi en charge ce genre d’opérations (en même temps que la sécurité générale sur le CMS).
S’il vous arrive une galère pendant votre installation/migration http vers https, envoyez-moi un message ou laissez un commentaire, et je vois ce que je peux faire pour vous sortir de là ! Bonne migration à tous !