Dans le cadre du développement du site www.WPSERVEUR.net, j'ai du passer un site WordPress en version sécurisée, à savoir de HTTP vers HTTPS.
Si cette procédure est relativement simple, elle nécessite toutefois quelques éclaircissements et précautions d'usage que je vais m'empresser de vous décrire dans ce tuto;)
Commençons tout d'abord par quelques définitions et rappels :
SSL : Secure Sockets Layer est un protocole de sécurisation des échanges sur Internet, développé à l'origine par Netscape. C'est le standard technologique de sécurité pour établir un lien crypté entre un serveur web et un navigateur. Ce lien garantit que toutes les données échangées entre le serveur web et les navigateurs restent privées et inviolables pour empêcher l'espionnage et la falsification.
HTTPS : HyperText Transfer Protocol Secure, littéralement "protocole de transfert hypertexte sécurisé" est la combinaison du HTTP avec une couche de chiffrement SSL ou TLS. Le HTTPS permet au visiteur de vérifier l'identité du site web auquel il accède, grâce à un certificat d'authentification émis par une autorité tierce, réputée fiable. Il garantit théoriquement la confidentialité et l'intégrité des données envoyées par l'utilisateur (notamment les informations entrées dans les formulaires) et reçues du serveur. Il permet de valider l'identité du visiteur, si celui-ci utilise également un certificat d'authentification client.
En résumé, le SSL est la norme qui définit comment seront cryptées les connexions via HTTPS !
Il y a de nombreux critères qui différencient HTTP de HTTPS, voici les 3 principaux:
En préambule, le HTTPS est particulièrement utile sur les réseaux non cryptés (tel que le réseau Wi-Fi), ou n'importe qui sur le même réseau local peut "renifler" via packet sniff les données et accéder des informations sensibles.
Lorsque vous servez du contenu depuis votre site via HTTPS, vous avez la garantie que personne ne va changer la façon dont les informations sont reçues par les utilisateurs. Si vous faites du business en ligne, vous aurez besoin du SSL. C'est la meilleure façon de protéger les données de vos utilisateurs et de vous défendre contre l'usurpation d'identité.
De plus en plus d'internautes refusent d'effectuer des transactions sur un site qui ne dispose pas d'un certificat SSL. Au final, afficher son certificat SSL sur le site indique aux clients qu'ils peuvent faire leurs achats et utiliser votre site Web en toute confiance et qu'ils seront protégés.
Pour un meilleur référencement ? Les sites sécurisés via SSL bénéficient en outre, d’un avantage pour leur référencement dans les pages de résultats de recherche. C’est ce qu’a annoncé Google qui inclut aujourd’hui le chiffrement des sites à sa liste de critères de positionnement. Je reste fortement mitigé sur la prime SEO/HTPPS et je vous invite à lire cet article.
Il existe de nombreux sites qui proposent l'achat de certificats SSL : Media Temple, GoDaddy, SSLs.com, OVH, Comodo et Namecheap.
Pour ma part, j'ai choisi Namecheap pour son excellent rapport qualité/prix et sa procédure simplifiée, à partir de 7€/ans pour leur certificat PositiveSSL.
Il existe différents types de certificats SSL :
Plus d'infos sur les différents certificats dans l'article quel certificat choisir?
Il existe autant de possibilités que d'hébergements et la procédure est différente selon votre fournisseur (dédié, VPS, Mutualisé,...) aussi je ne détaillerais pas l'installation sur mon serveur dédié Apache, toutefois pour ceux que cela intéresse, rendez-vous sur https://support.comodo.com/installation-apache-mod_ssl.
Pour les hébergements mutualisés, renseignez-vous auprès de vos hébergeurs, certains proposent des certificats SSL dans leurs offres.
Une équipe de Google a récemment mis en lumière une faille de sécurité dans le protocole SSL utilisé pour chiffrer les échanges de données entre un navigateur et un site web. Mise en oeuvre, elle permet à un hacker de se faire passer pour sa victime et d'accéder à des données privées sur un service tel qu'un webmail ou le serveur d'une banque.
Cette vulnérabilité SSL a été baptisée "POODLE" pour Padding Oracle On Downgraded Legacy Encryption. Elle utilise une ancienne version 3 du protocole SSL, sortie il y a 15 ans, qui assure le chiffrement d'une transaction. Une autre méthode plus robuste et plus répandue existe néanmoins: TLS 1.0. Cependant des sites web utilisent toujours SSLv3 pour assurer une compatibilité avec Internet Explorer 6 dans Windows XP. Surtout la technique sait simuler un problème de connexion et forcer un navigateur à basculer de TLS à SSLv3. Plus d'information sur cette faille Poodle SSLv3.
Pour s'en prémunir, il vous faudra donc désactiver le SSL v3 sur votre serveur. Le mode d'emploi est à lire chez www.digitalocean.com/protect-poodle-sslv3.
Enfin pour vérifier la qualité de votre certificat SSL, il vous suffit de tester votre domaine sur le site de https://www.ssllabs.com.
Pour placer votre WordPress en HTTPS, nous l'avons vu, vous devez nécessairement obtenir un certificat SSL pour votre nom de domaine, l'installer sur le serveur et enfin changer les permaliens du site de HTTP en HTTPS.
Tous les liens dans WordPress (tels que les images jointes, CSS des thèmes, fichiers JavaScript) sont liés à l'URL d'installation, aussi pour changer votre WordPress de http en https, l'URL d'installation doit être changée: de http://monsite.com en https://monsite.com
Connectez-vous à votre tableau de bord WordPress et accédez à Réglages>>Général. Assurez-vous que l' adresse de WordPress (URL) et l'adresse du site (URL) soient bien en https.
Pour activer facilement (et imposer) l'administration de WordPress sur SSL, la constante FORCE_SSL_ADMIN doit être réglée sur "TRUE" dans votre fichier wp-config.php pour forcer toutes les connexions et toutes les sessions d'administration à se produire sur SSL.
define ( 'FORCE_SSL_ADMIN' , true);
Si votre WordPress utilise un réseau de diffusion de contenu (CDN) pour servir ses composants (images, JavaScript, feuilles de style CSS), vérifiez que toutes les URLs soient bien en HTTPS sinon le certificat de votre site ne sera pas jugé satisfaisant par les navigateurs Web.
Maintenant que WordPress a été déplacé avec succès en HTTPS, il reste encore quelques petites choses à faire!
N'oublions pas de rediriger ! Pour configurer une redirection 301 permanente, ajoutez le code ci-dessous dans votre fichier .htaccess.
RewriteEngine on
RewriteCond% {HTTP_HOST} ^ votresite.com [NC, OR]
RewriteCond% {HTTP_HOST} ^ www.votresite.com [NC]
(*). RewriteRule ^ $ https: //www.votresite.com/$1 [L, R = 301, NC]
Recherchez ensuite toutes les URLs commençants par http://... dans vos contenus. Pour ce faire, affichez simplement le code source de vos pages, on a parfois de vraies surprises...
Forcer le https pour les URLs canoniques de votre site et c'est d'autant plus facile si vous utilisez le plugin SEO by Yoast (à régler depuis SEO>>Permaliens)
Il existe des plugins WordPress pour le HTTPS, personnellement je ne m'en suis pas servi mais cela pourra toujours être utile:
Enfin, n'oubliez pas d'informer Google via Google Webmaster Tools de ce changement. Il suffit de valider votre nouveau domaine en HTTPS et de déclarer le transfert.
Pour ne rien oublier, assurez-vous de :