Nous y sommes enfin, cela fait quelques semaines que l’idée me trottait dans la tête et c’est pendant ce long weekend de pâque que j’ai décidé de sauter le pas. Nous verrons ensemble dans le détail et aussi précis que possible comment migrer son site WordPress HTTP vers HTTPS.

Préambules

Contexte

Je suis propriétaire d’un serveur ESXi chez SoYouStart pour ne pas les citer et ai donc la main à 100% sur l’infrastructure.

Le site internet sys-advisor.com, CRM WordPress tourne actuellement sur un serveur virtuel Linux Debian sous Apache :

Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux

Pourquoi migrer en HTTPS ?

De plus en plus de sites se tourne vers le HTTPS afin de fournir à leurs internautes une expérience web totalement sécurisée.

Lorsque vous sécurisez votre site internet avec un certificat SSL, vous garantissez non seulement que la communication établie par vos internautes est sécurisée de bout en bout mais également que la donnée que vous leur fournissez est saine du début jusqu’à la fin, il s’agit la d’un vrai gage de confiance apporté.

Les internautes sont aujourd’hui bien plus sensibilisés à toutes ces questions de sécurité.

La politique des différents géants du référencement / navigateur évoluent également, en effet Google a annoncé en fin d’année dernière qu’ils durciraient les règles autour de la sécurisation des sites internet.

Message d’alerte plus agressif lorsqu’un internaute visitera un site non sécurisé

Cible des sites e-commerce ayant des échanges de coordonnées bancaires

Un meilleur référencement des sites HTTPS (source à confirmer)

Un peu de documentation sur le sujet :

Récupérer le certificat SSL

Quel certificat ?

Il existe plusieurs types de certificat en fonction de votre statut et vos besoins :

Validation Domaine : Il s’agit du type de certificat faisant partie généralement des moins cher. Le certificat Validation Domaine permet un cryptage de base et est très rapidement délivré. Lors de la commande, il est demandé une simple vérification du nom de domaine. Validation Entreprise : Ce type de certificat inclus l’authentification de l’entreprise et/ou de l’organisation qui est propriétaire du domaine. Validation Étendue : Ce troisième et dernier type de certificat offre le plus haut degré de sécurité. Un exemen en profondeur de votre entreprise est alors fait avant l’émission du certificat.

Outre le fait important de choisir le bon type de certificat, il faudra trouver le partenaire chez qui acheter ce certificat.

Il existe une énormément de site ou vous pouvez acheter votre certificat. Pour mon besoin, j’ai décider de me fournir chez Namecheap et de prendre le certificat bon marché Comodo « PositiveSSL » à environ 9€.

Génération du CSR pour le certificat

Connectez vous sur votre serveur puis commençons par créer le répertoire ou sera stocké nos futures certificats.

mkdir /etc/apache2/ssl cd /etc/apache2/ssl

Nous allons maintenant générer le CSR ainsi que la private key avec openssl. Pour cela, saisissez la commande suivante :

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Paramétrage des informations à inclure dans le certificat :

Country Name

State or Province Name

Locality Name

Organization Name

Organizational Unit Name

Common Name

Email Address

Voici notre csr avec sa private key.

Vous aurez besoin du contenu du fichier csr pour générer le certificat sur Namecheap.

Commande du certificat PositiveSSL

Il est maintenant temps de commander et récupérer notre certificat PositiveSSL depuis le site Namecheap.

Achetez le certificat PositiveSSL (ou autre) puis rendez sur votre page de management et cliquez sur « ACTIVATE ».

Collez le contenu de votre CSR généré précédemment dans le champ « Enter CSR ».

Votre « Primary Domain » est alors normalement automatiquement détecté.

Sélectionnez ensuite le type de server « Apache, Nginx, cPanel or other ».

Cliquez sur « Submit » pour continuer.

Si tout vous semble correcte, cliquez sur « Next ».

Il est temps de valider que vous êtes bien le propriétaire du domaine précisé dans le certificat.

Plusieurs méthodes sont possibles :

DNS-based : Ajout d’un champ CNAME dans votre zone DNS

Email : Validation par email (souvent [email protected])

HTTP-Based : Ajout d’un fichier à la racine de votre site

Pour ma part j’ai choisi la méthode « DNS-based ».

Cliquez sur « Next ».

Renseignez les différents champ pour spécifier vos coordonnées de contact.

Cliquez sur « Confirm » pour terminer l’activation du certificat.

Des informations pour ajouter le CNAME dans votre zone DNS vous seront préciser par la suite par mail. Faites le nécessaire et votre certificat devrait être validé dans l’heure.

Voici le mail que vous recevez lorsque toutes les informations que vous avez saisies sont validées (la chaîne de certificat racine « bundle » ainsi que votre certificat seront joint au mail).

Configuration de votre serveur Apache

Configuration des prérequis

Nous allons commencer par importer les 2 certificats « cer » et « ca-bundle » reçu par mail dans le bon répertoire :

/etc/apache2/ssl/

Vérifiez que les module ssl et headers soient bien activé en saisissant les commandes suivantes :

a2enmod ssl a2enmod headers /etc/init.d/apache2 restart

Note : n’oubliez pas de redémarrer Apache

Vérifions que notre serveur Apache écoute bien sur le port 443.

netstat -tanpu | grep "LISTEN" | grep "

Si ce n’est pas le cas, vérifiez les paramètres du fichier port.conf d’Apache.

vim /etc/apache2/ports.conf

Configuration du nouveau site SSL

Copiez le fichier de configuration Apache sites-available de votre site (en mode HTTP) au même endroit en ajoutant « -ssl » par exemple.

Modifiez le fichier que vous venez de créer avec les paramètres suivants :

Modifiez le port d’écoute « 80 » par « 443 »

Ajoutez la partie SSL en vérifiant qu’il s’agit bien des bons certificats

# Activation du SSL SSLEngine On # Activation de tous les protocoles sécurisés (TLS v1.0, TLS v1.1 et TLS v1.2) tout en désactivant les protocoles moins sécurisés (SSL v2 et v3) SSLProtocol All -SSLv3 -SSLv2 # On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente d'un !) SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH # Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite SSLHonorCipherOrder on # Chemin vers le certificat SSL de votre nom de domaine SSLCertificateFile "/etc/apache2/ssl/www-nom-domaine-fr.cer" # Chemin vers la clée privée du certificat SSL de votre nom de domaine SSLCertificateKeyFile "/etc/apache2/ssl/www-nom-domaine-fr.key" # Chemin vers le certificat SSL racine bundle SSLCertificateChainFile "/etc/apache2/ssl/certificat-racine.ca-bundle"

Activez le nouveau site en SSL avec la commande

a2ensite votredomaine.com-ssl /etc/init.d/apache2 reload

Note : n’oubliez pas de reload Apache.

Verdict ?

La configuration de votre site SSL est maintenant terminé et le site est bien activé.

Il n’y a plus qu’à tester tout ça « https://….. » et si tout fonctionne correctement, vous devriez avoir le petit cadenas vert (google chrome) comme ci-dessous :

Testons maintenant la qualité de notre site en SSL et du certificat que nous venons de mettre en place grâce à ce site :

Si tout est bon =>

Configuration de WordPress pour le HTTPS et gestion du SEO

Configuration des réglages généraux

Connectez-vous sur la console d’administration de votre site WordPress puis rendez-vous dans la rubrique « Réglages généraux ». Il vous suffira ici de modifier « HTTP » par « HTTPS » comme sur le Screenshot ci-dessous.

Forcer l’authentification à la console en SSL

Editez le fichier wp-config.php de votre site wordpress puis ajoutez la ligne suivante :

define ( 'FORCE_SSL_ADMIN' , true);

Configuration des règles de redirection 301

Il s’agit peut-être la de la partie la plus importante, en effet si vous ne souhaitez pas avoir une perte sur le référencement de votre site, il ne faudra pas oublier de faire une redirection 301 de tous les liens de votre ancien site en « HTTP » vers votre nouveau site en « HTTPS ».

Pour cela, rien de plus simple (Ou pas, j’avoue j’ai un peu galéré…). Éditez le fichier « .htaccess » qui se trouve à la racine de votre site WordPress et insérez la configuration ci-dessous dans le fichier en fonction de votre situation.

Deux possibilités s’offrent à vous :

Si votre site n’utilise pas le www

# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://votresite.com/$1 [R=301,L] # Redirection du www vers non-www en HTTPS RewriteCond %{HTTP_HOST} ^www\.votresite\.com [NC] RewriteRule ^(.*)$ https://votresite.com/$1 [R=301,L]

Si votre site utilise le www

# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ [OR] RewriteCond %{HTTPS} =off RewriteRule ^(.*)$ https://www.votresite.com/$1 [R=301,L] # Redirection du www vers www en HTTPS RewriteCond %{HTTP_HOST} ^votresite.com [NC] RewriteRule ^(.*)$ https://www.votresite.com/$1 [R=301,L]

Vérification que les règles 301 sont correctes

Maintenant que les redirections 301 sont opérationnelles, nous allons vérifier que vous n’avez oublié aucune situation. Rendez-vous sur le site suivant et saisissez votre site dans la recherche.

https://www.linksspy.com/seo-tools/free-seo-ssl-scan/new

Si la configuration de la redirection 301 est parfaite alors vous devriez avoir quelque chose de ce type sans aucune erreur.

Remplacement des urls internes

Pour ma part, j’ai utilisé le plugin WordPress « Beter Search Replace » qui fait très bien le job (je vous laisse le télécharger).

Comment cela fonctionne ?

Rechercher : Saisissez l’url de votre site web http Remplace avec : Saisissez l’url de votre site web https Sélectionnez toutes les tables (il faut qu’elles soient en surbrillance) Coché ou non la case en fonction si vous souhaitez faire un test ou pas Cliquez sur « Rechercher / Remplacer »

Cela prend un peu de temps en fonction de la taille de votre site, cf le résultat qui devrait apparaître en haut de la page.

Mise à jour du robot.txt

Editez simplement le fichier « robot.txt » à la racine de votre site et modifiez le « HTTP » en « HTTPS ».

Mise à jour de la console Google Search Console

Connectez-vous sur la console « Google Search Console » et déclarez les deux nouveaux site en https

https://votresite.com

https://www.votresite.com

Voyez ici mes deux nouveaux sites déclarés, je vous laisse gérer la configuration spécifique de chaque site.

Configuration des nouveaux sitemaps

Et oui, vos sitemaps ont eux aussi changé… http vers https donc n’oubliez pas de les configurer.

Pour cela, il va falloir faire cette configuration sur chaque nouveau site que vous venez juste d’ajouter.

Par exemple : https://votresite.com => ajoutez le sitemap https://votresite.com/sitemap.xml https://www.votresite.com => ajoutez le sitemap https://www.votresite.com/sitemap.xml

Mise à jour de la console Google Analytics

Pas de nouveau site à déclarer pour la partie Analytics, rendez-vous sur la console « Google Analytics » puis dans la partie « Paramètres de la propriété ».

Il ne vous reste plus qu’à modifier l’URL par défaut en « HTTPS ».

De mon côté depuis WordPress, j’ai également forcé une réauthentification via le plugin « Insights » avec Google Analytics pour être sur que tout fonctionne bien.

Mise à jour de la console Bing Webmaster

N’oubliez pas Bing 😛

Pour faire cette modification, vous devez supprimer intégralement les anciens sitemaps et y ajouter votre nouveau sitemap, pas de site à redéclarer.



Tout est dit dans ce gros partage !

N’hésitez pas à laisser vos commentaires, j’ai essayé de traiter le sujet de bout en bout et espère n’avoir rien n’oublié. On se revoit sur cette article dans quelques jours / semaines pour un feedback sur la migration.

Quelques sources pour l’inspiration 🙂 :

Source1

Source2