Nous contacter

Tutoriel : comment migrer mon site en https ?

SWAN, VOTRE OUTIL DE MIGRATION EN LIGNE
migration en ligne



Je vous en parlais dans mon article sur la migration d'url lors de la refonte de site mais après quelques échanges sur twitter, la procédure complète nécessitait d'être détaillée. Si après cet article vous avez encore des questions n'hésitez pas à le dire dans les commentaires, je compléterai ce tutoriel. Migrer votre site en https correspond à la mise en place d'un certificat ssl pour que votre site soit accessible sur l'ensemble de ses pages via une url qui démarre par https. C'est l'une des pratiques du moment en terme de seo technique on site.

Pourquoi migrer son site en HTTPS ?

Mettre son site web en https va permettre de rassurer. Vous rassurerez deux groupes de personnes, vos clients et google. En effet le https sous l’engouement global tend à devenir une norme. Aussi vos clients auront plus tendance à accorder leur confiance si votre site est en https que si il est en http. C'est pour l'instant assez discret mais rappelez vous les scandales liés à la vie privée sur facebook, les débuts du e-commerce ou un paiement par carte bancaire faisaient peur ? Désormais vous pouvez rassurer vos utilisateurs en passant en https. Passer son site en https permet aux données d'être cryptées avant de sortir de votre ordinateur et décryptées une fois sur le serveur de votre site. Entre autre terme, une personne ou un logiciel pirate malveillant qui intercepterait des informations privées les recevraient cryptées et aurait donc plus de mal à les lire. Il est désormais facile pour un visiteur / client de reconnaître un site en https :

Comment savoir si le site que je visite est sécurisé avec un certificat ssl ?

Au delà de la simple image cadenas de réassurance que n'importe qui peut mettre, un indice dans la barre d'adresse de votre navigateur permet de savoir si le site est sécurisé:

  • Site non sécurisé :
absence certificat ssl
  • Site sécurisé de niveau 1
certificat ssl niveau 1
  • Site sécurisé de niveau 2 (certificat EV)
certificat ssl ev

le site de symantec (éditeur de certificats) utilise un certificat de type EV


Désormais firefox et chrome vous préviennent tous les deux en cas d'absence de certificat ssl sur le site. Si le site est simplement non sécurisé vous aurez une alerte discrète comme celle indiqué ci-dessus. Si le site est en https mais sans certificat ou avec un certificat non sécurisé la navigateur indiquera un écran d'erreur qui ressemblera à ceci :

faux https chrome

Rendu d'un site avec une urls https sans certificat sous chrome

faux https firefox

Exemple d'une url https qui n'a pas de certificat ssl sous firefox

La migration en https a-t-elle un impact sur le référencement ?

On peut légitimement se demander si le passage en ssl améliore ou diminue les perfs en SEO. De ma propre expérience, j'ai vu de nombreux changement accompagner les migrations SEO, il est donc complexe de dire si ce point seul était responsable d'une amélioration. On peut de manière certaine dire que c'est un signal positif envoyé à google. On pourra sans doute bientôt parler de malus http plutôt que de bonus https. La partie bonus sur le positionnement de votre site ayant été démentie par @méthode :

tweet https bonus rank

Chrome a annoncé passé à partir des version de mi 2017 faire une indication non sécurisée à la moindre données transmise hors https, et pas uniquement qu'un mot de passe. Du côté des risques si la procédure qui va suivre est exécutée correctement il n'y a pas de risque de perte de pagerank. En effet google via Gary Illyes a indiqué dès mi 2016 qu'une redirection 301 n'impliquait plus de perte de pagerank.

pas de perte pagerank

Une migration peut en revanche avoir un léger impact sur les perfs lié au chiffrement en accroissant le temps de réponse mais ce point est normalement minime. Sur les différents site https que je gère j'ai des pages qui répondent en moins de 0.5s même après passage en https. Je n'ai pas vu de changement significatifs. A mon sens si on fait en sorte de limiter le nombre de requêtes apaches (javascript multiple et css par exemple) le temps de chargement ne s'en trouve pas dégradé.

Quels sont les différents types de certificats https et leurs prix ?

Du certificat gratuit au certificat wildcard payant il existe plusieurs solutions adaptées à tous les budgets.

Les certificats gratuits de let's encrypt

Let's encrypt est une organisation a but non lucratif qui propose des certificats de type DV (domain validation) gratuitement. Cette organisation est sponsorisée par de grands acteurs du web comme mozilla, facebook, chrome, ovh, cysco etc... Vous trouverez plus d'informations sur leur site: https://letsencrypt.org/. A noter qu'un certificat let's encrypt doit être renouvelé tous les 3 mois. Ce renouvellement peut être réalisé via un cron pour vous éviter d'oublier. Dans tous les cas si vous avez fait l'installation comme il faut, il vous enverra un mail pour vous prévenir de l'expiration.

Les certificats payant et leurs tarifs

A titre d'exemple j'ai choisi de me référer au tarifs de thawte , je tiens à préciser que je n'ai pas de liens avec eux. Ils ont simplement des certificats à tarifs abordables. A titre de comparaison on aura un écart de 5x moins cher que les tarifs de chez symantec (ex very sign). Dans le cadre d'un certificat payant il faut à mon sens choisir entre deux certificats : Soit l'extended validation (EV) celui qui inscrit le nom de l'entreprise et donnait l'ancien effet "barre verte" et un certificat de type Organization Validation (OV) en multi domaine. Le premier valable pour un unique domaine démarre à 249€ annuel pour une garantie de 1.5 millions de $ US et le second couvre autant de sous domaine que vous le souhaitez pour un tarif de 549€ annuels et une garantie de 1.25 millions de $ US. Vous trouverez tous les tarifs ici : https://www.thawte.fr/ssl/. Le renouvellement de certificat payant se fait par tranche minimum de 1 an, évidement plus longtemps il est valide, plus vous envoyez un signal positif à google. (Tout comme pour les noms de domaine)

Payant vs gratuit : comment choisir?

Au delà du budget qui sera sans doute votre premier critère, il faut prendre en compte la garantie et le signal envoyé par le délai de validité. Un site non marchand sans grande ambition SEO pourra prendre un let's encrypt alors qu'un site marchand aura tout intérêt à arborer un certificat EV avec une garantie élevée.

Quelles sont les étapes et comment effectuer l'installation d'un certificat SSL ?

Avant tout, la mise en place est certes longue et méthodique mais elle n'est pas risquée si l'on suit bien toutes ces étapes. Vous allez le voir il y a un avant, un pendant et un après.

Etape 1 - Faire un audit des urls existantes avant la migration

Deux cas de figure soit vous passez juste de http à https soit vous changez également le format de vos urls. Dans le premier cas, il vous faut analyser votre code (ou directement en Base de données si vous maitrisez le mysql) pour détecter si vos pages contiennent des urls vers des pages ou des ressources de type CSS, JS ou image en absolue de type http. une image appelée <img src="media/logo.jpg" /> migrera automatiquement alors que <img src="/media/logo.jpg" /> posera problème car l'url est inscrite en dur. Dans le second cas il est important d'avoir deux version accessibles de votre site. une prod en http et une pré-prod en https par exemple. L'idée est d'établir une liste sous excel de l'ensemble des urls de l'ancien site (PROD) et du nouveau site (préprod) en vue d'établir un plan de migration d'urls.

Etape 2 - Faire un plan de migration de vos URLs

Nous allons ainsi faire un résumé des best pratices décrites dans mon article : Comment corriger les erreurs 404 et garder le seo lors d'une migration de site ?. Cette seconde étape de ce tutoriel ce divise en 3 parties.


1. Prévoir les changements dans le code, les cms et où par requêtes SQL des contenus appelés avec une url inscrite en dur.


2. Prévoir un mapping des anciennes urls dont le format change vers les nouvelles. exemple:

RewriteRule ^magento$ /e-commerce/magento [L,R=301]

3. Mettre en place un mapping dynamique pour tout le reste. exemple :

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Les étapes 2 et 3 sont à réaliser dans votre fichier .htaccess , il est important de mettre les redirections dynamique en fin de fichier.

Etape 3 - Obtention et configuration du certificat

Le certificat let's encrypt s'obtient via l'installation d'un package sur votre serveur et un certificat payant suite à validation de certaines étapes prouvant votre identités. Il vous sera par exemple demandé de rentrer vos coordonnées dans un annuaire public type pages jaunes, ensuite on vous appellera sur le numéro de cet annuaire et échangera avec vous des codes de sécurité par email avant de finalement vous envoyer le certificat par mail. (oui on perd un peu de sécurité là, c'est paradoxal). (Si vous souhaitez un tuto sur la mise en place d'un certificat let's encrypt demandez le moi dans les commentaires) Vous devrez ensuite paramétrer votre serveur web pour installer le certificat. Cette configuration se passe au niveau apache à qui vous devrez dire d'écouter le port 443 et non plus le port 80.

<IfModule mod_ssl.c>
<VirtualHost *:443> # indication du port 443 en écoute
ServerAdmin pvalibus@gmail.com
ServerName www.valib.us #le servername ne prend pas de préfixe http ou https
ServerAlias valib.us #idem pour le server alias
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" #cette ligne vous servira dans le cadre de HSTS (voir à la fin de l'article)
... #ici il faut mettre vos directory, config de log etc...
SSLCertificateFile /etc/letsencrypt/cert/fullchain.pem #lien vers la full chain transmise par let's encrypt ou autre
SSLCertificateKeyFile /etc/letsencrypt/cert/privkey.pem #lien vers la full chain transmise par let's encrypt ou autre
Include /etc/letsencrypt/options-ssl-apache.conf #fichier de configuration ssl let's encrypt
</VirtualHost>
</IfModule>
Attention si vous utilisez en plus de Apache, un tandem nginx et varnish, il vous faudra également inclure le certificat dans la configuration nginx. Dans ce dernier cas votre htaccess devra prendre cette forme, car le X-Forwarded proto permet de passer les informations du proxy
RewriteCond %{HTTP:X-Forwarded-Port} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP:X-Forwarded-Port} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Etape 4 - Configurer votre CMS pour https

Dans cette section je vais vous expliquer comment migrer votre wordpress ou votre magento en https. Pour les autres cms ou dev spé, les réglages ne doivent pas beaucoup changer, et bien sur les autres étapes du tutoriel restent valides car transverses à tout chantier d'installation ssl.

Comment configurer Magento en https pour prendre en compte le SSL ?

  • Le point positif est que les réglages magento 1 et magento 2 sont quasiment identiques. Accès magento 1 : Dans le menu "System" -> Section "configuration" -> Groupe "General" -> Item "Web"
  • Accès magento 2 : Dans le menu "Store" -> Section "configuration" -> Groupe "General" -> Item "Web"
configuration https magento

Comment configurer wordpress en https et activer l'utilisation du certificat ssl?

Du côté de wordpress on se rendra simplement dans les paramétrages du menu "réglages" puis dans général on activera les urls ci-dessous. Contrairement à magento wordpress n'a pas besoin du / final.

configuration https wordpress

Si vous utilisez nginx + varnish, le reverse proxy impliquera un réglage supplémentaire pour le ssl sur le port 443. il faudra aller éditer la fonction is_ssl() de wordpress dans wp-include/load.php

function is_ssl() {
if ( isset($_SERVER['HTTPS']) ) {
if ( 'on' == strtolower($_SERVER['HTTPS']) )
return true;
if ( '1' == $_SERVER['HTTPS'] )
return true;
} elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
return true;
} elseif ('https'==$_SERVER['HTTP_X_FORWARDED_PROTO']||'443'==$_SERVER['HTTP_X_FORWARDED_PORT']){
return true;
}
return false;
}

Etape 5 - Tester la configuration du certificat ssl

Il existe plusieurs outils gratuits pour vérifier que votre certificat est bien mis en place. Je vous conseil les deux ci-dessous.

Outil de test rapide de configuration apache ssl

Le premier, le plus rapide vous donnera déjà un bon premier aperçu: https://www.sslshopper.com/ssl-checker.html qui si tout se passe bien vous indiquera uniquement des cases à cocher vertes.

test ssl shoper

Le test complet de votre certificat sécurisé sur ssl labs (plus long)

Je ne vous apprends rien si je vous dis qu'il n'est pas envisageable de viser moins que A+, après tout si vous avez lu l'article jusque là c'est que vous voulez faire une vrai installation SSL sur votre serveur. L'avantage du test de ssl labs qui est plus long (environ 1 minute) c'est qu'il test aussi votre serveur sur certaine faille comme la faille "OpenSSL Padding Oracle vuln. (CVE-2016-2107)". Ce test est accessible à l'url suivante : https://www.ssllabs.com/ssltest/

test ssllabs

Etape 6 - activer le plan de migration dans le .htaccess

Maintenant que tout est prêt et que votre site est accessible en https, vous pouvez activer votre plan de redirection. Pour cela il faut mettre à jour votre fichier .htaccess sur votre serveur. Il faut le préparer en étape 2 mais ne l'uploader qu'à ce moment, surtout si vous avez un fort trafic, google risque de commencer à crawler des redirections vers des https non activées et du coup obtenir une 404 ou pire une unsecure. Rappelez vous ici de bien commencer par l'url redirigée finement, puis les redirections dynamiques et enfin la redirection globale par défaut http vers https.

Etape 7 - Tester la prise en compte des ressources en https

Comme je vous l'indiquais il ne faut pas oublier de vérifier que tous les liens internes d'une page sont bien en https. il suffit d'une image appelée en http au sein d'une page pour perdre la validation https de la page. Pour éviter de type de déconvenue, dès la mise en ligne de votre migration il faudra faire un crawl du site avec screaming frog. L'objectif sera de repérer les pages qui ont des restes de http, souvent ce sont des images rentrées en "dur".

screaming frog https

Etape 8 - la configuration des outils de suivis

Dans le cadre de votre migration, il va falloir modifier les réglages dans webmaster tools (search console) et analytics. Analytics est très rapide à régler, webmaster tools un peu moins.

Comment activer le https dans google analytics

L'avantage d'analytics est qu'il n'est pas nécessaire de faire un changement de propriétés ou de vue, on ne perdra donc pas d'informations. Pour activer le paramétrage il faut se rendre dans administration choisir votre propriétés et activer https dans la liste déroulante comme dans la capture ci-dessous. Attention (et me demander par pourquoi) il faut également l'activer dans la ou les vues rattachées à la propriétés.

réglages analytics https

Une fois le réglage sauvegardé, il n'est pas nécessaire de mettre à jour le code de tracking sur votre site.

Comment activer le https dans la search console (google webmaster tools) ?

De ce côté là c'est un peu plus compliqué. Vous allez perdre des données car vous ne pas juste "switcher". Il va falloir créer non pas une autre propriété mais bien 2 à 3. Globalement il faut créer les propriétés suivantes:

  • http://valib.us
  • https://www.410-gone.fr
  • https://valib.us
  • https://www.410-gone.fr

Vous allez donc vous retrouver avec un accueil de la console un peu "encombré" avec ceci :

créer propriétés https search console

Pourquoi créer autant de propriétés me direz vous? Tout simplement pour être sur de tracker l'évolution des urls indexées sur ces différents réglages . Comme vous pouvez le voir dans le graphique ci-dessous, j'ai fait un montage pour venir greffer la courbe d'un site sur la propriétés http sur sa nouvelle vue https. Au fur et à mesure que les urls de l'https apparaissent (souvent d'un coup) les urls http elles peuvent mettre du temps à disparaître.

migration https webmaster tools

Courbe de avant (en rouge) et après https (en bleu) sur le nombre de page indexées

Comme vous vous en doutez vous allez donc perdre un peu d'informations. Pour finir dans webmaster tools il va falloir paramétrer votre domaine favori en vous plaçant sur la roue en haut à droite dans la vue www et https et sélectionner l'url comme dans la capture ci-dessous :

paramètres de site par défaut webmaster tools

Etape 9 - Suivre régulièrement l'évolution

Votre objectif ici va être de suivre régulièrement la progression de l'indexation https mais également de la désindexation http. Pour ce faire, je vous invite à utiliser 2 outils, le premier très simple, la commande site: dans google. Nous allons nous en servir pour chercher les urls du site et retirer celle en http via la commande inurl. Ce qui donnera cela :

site:https://www.410-gone.fr -inurl:https://www.410-gone.fr


(comme vous le verrez à l'instant ou j'écris ces lignes, il y a encore un peu de patience à avoir auprès de google me concernant. (Mais avec tous les backlinks que vous allez faire vers cet article ça va aider à accélérer en principe non ? :-) ) La seconde solution sera d'utiliser oncrawl ou botify pour suivre la progression des urls indexées.

Conclusion

Tout d'abord, merci d'avoir lu jusque là, j'espère que vous aurez à la suite de ce tutoriel tout compris sur la migration en https. L'idée derrière ces explication est de vous éviter de vous retrouver avec un site en duplicate content à la fois indexé en http et en https. Bien sur si vous avez des questions, n'hésitez pas à m'écrire dans les commentaires ou prendre rendez-vous pour que je vous accompagne pendant votre migration.

Livre

Découvrez les best practices en SEO

Téléchargez notre livre blanc SEO !