WordPress HTTPS, SSL & TLS – un guide pour les administrateurs de sites Web

Publié: 2021-02-01

Lorsque vous visitez un site Web, votre navigateur (également appelé client ) envoie une requête HTTP à un serveur Web. Une fois que le serveur Web envoie une réponse HTTP , le navigateur peut alors afficher la page sur votre écran. Cependant, le trafic HTTP a un problème ; c'est un protocole en clair. Cela le rend vulnérable à l'espionnage et à l'ingérence.

Si un attaquant se trouve sur le même réseau que vous, il peut intercepter et lire votre trafic HTTP. Ils peuvent également modifier à la fois vos demandes au serveur, ainsi que les réponses du serveur qui vous sont renvoyées. C'est ce qu'on appelle une attaque Man-in-the-Middle (MitM). Cela peut facilement se produire sur les réseaux Wi-Fi publics, tels que ceux des halls d'hôtel et des espaces publics.

C'est pourquoi un site Web doit être sur HTTPS - afin que le trafic ne puisse pas être intercepté. Cet article explique ce que sont HTTPS, SSL et TLS. Il explique également comment vous pouvez configurer votre site Web WordPress pour qu'il fonctionne sur HTTPS.

Table des matières

  • Qu'est-ce que SSL et TLS ?
  • Qu'est-ce que le HTTPS ?
    • Comment fonctionne HTTPS ?
      • La poignée de main TLS
      • Les clés publiques et privées (la paire de clés)
  • Ai-je vraiment besoin de HTTPS sur mon site WordPress ?
    • Obtenir un certificat HTTPS TLS (alias certificat SSL)
    • HTTPS sur l'hébergement WordPress mutualisé et managé
  • Configurer WordPress HTTPS
    • Configuration du serveur Web
    • Configuration de l'URL WordPress en HTTPS
    • Application de TLS sur le tableau de bord WordPress (astuces bonus)
  • Ajout de HTTP Strict Transport Security (HSTS)
    • Configuration de HSTS sur le serveur Web
    • Chiffrements TLS
    • Mon WordPress fonctionne en HTTPS, est-il sécurisé ?

Qu'est-ce que SSL et TLS ?

Une fois qu'Internet a commencé à se développer, il est devenu évident que nous avions besoin d'un mécanisme pour transférer en toute sécurité des informations entre un client et un serveur sans que personne ne puisse écouter ou modifier le trafic - entrez SSL ou Secure Socket Layer. SSL est un protocole de sécurité Internet, développé pour la première fois par Netscape en 1995 pour résoudre ce problème.

Plus précisément, SSL a pour objectif d'accomplir les tâches suivantes :

  • Cryptage - pour crypter le trafic afin qu'il ne puisse pas être intercepté par un tiers non autorisé par écoute clandestine,
  • Authentification - pour s'assurer que le serveur auquel le client parle est bien le serveur qu'il prétend être,
  • Intégrité - pour s'assurer que les données envoyées entre le client et le serveur ne sont pas modifiées par quelqu'un d'autre en cours de route.

Cependant, au fil du temps, les chercheurs en sécurité ont identifié un certain nombre de problèmes de sécurité dans SSL. Par conséquent, SSL a été remplacé par TLS (protocole Transport Layer Security). Bien que les différences sous le capot entre SSL et TLS soient drastiques, le but de TLS reste largement le même.

REMARQUE : vous pouvez fréquemment voir SSL utilisé pour faire référence à TLS. SSL est un protocole hérité et n'est plus sûr à utiliser. Cependant, en raison de sa popularité, beaucoup utilisent encore SSL comme acronyme, mais ils signifient TLS .

Qu'est-ce que le HTTPS ?

HTTPS, ou Hypertext Transfer Protocol Secure est une version sécurisée du protocole HTTP. HTTPS s'appuie sur Transport Layer Security (TLS), un protocole amélioré et plus sécurisé que celui précédemment utilisé, Secure Socket Layer (SSL). TLS fournit le chiffrement, l'authentification et l'intégrité des requêtes et des réponses HTTPS.

Vous pouvez considérer HTTPS comme des requêtes et des réponses HTTP (c'est-à-dire la version en clair du protocole) passant par un tunnel TLS . Le terme technique pour cela est encapsulation . Il est pertinent de noter que TLS peut être utilisé pour encapsuler d'autres protocoles, pas seulement HTTP.

Vous pouvez repérer les sites Web qui utilisent HTTPS en regardant le début de l'URL (commence par HTTPS) dans la barre de navigation du navigateur ou par le cadenas vert. Si vous naviguez sur un site Web sur HTTP, les navigateurs le marquent comme non sécurisé .

Sites Web HTTP marqués comme non sécurisés

Comment fonctionne HTTPS ?

Lorsque vous demandez une page Web à l'aide de HTTPS, votre navigateur et le serveur Web démarrent un processus appelé TLS handshake . La poignée de main TLS est un moyen pour le client et le serveur de décider si et comment ils doivent communiquer. Au cours de la poignée de main TLS, le client et le serveur effectuent les actions suivantes :

  • décider de la version du protocole TLS à utiliser (TLS 1.0, 1.2, 1.3…),
  • convenir des suites de chiffrement (un ensemble d'algorithmes de chiffrement utilisés pour établir des communications sécurisées) à utiliser,
  • authentifier l'identité du serveur,
  • générer des clés de cryptage à utiliser une fois la poignée de main terminée, afin de communiquer en toute sécurité.

La poignée de main TLS

Pendant la poignée de main TLS, le serveur envoie au client son certificat afin que le client vérifie qu'il peut authentifier le serveur. Un certificat est similaire à un passeport - il est délivré par une autorité centrale de confiance appelée autorité de certification (CA) qui établit indépendamment l'identité du site Web, il peut être prouvé à votre navigateur.

Les clés publiques et privées (la paire de clés)

Le certificat TLS (souvent appelé certificat SSL) que le serveur Web envoie au client contient la clé publique . La clé publique est l'une des deux clés spéciales appelées keypair . Une paire de clés se compose de deux clés ; la clé publique et la clé privée . Alors que la clé publique est partagée avec les clients, la clé privée est gardée secrète sur le serveur et n'est jamais divulguée. La paire de clés est forgée ensemble.

La paire de clés publique et privée a une relation particulièrement intéressante — sans connaître la clé privée du serveur (elle est secrète et seul le serveur doit la connaître), un client peut crypter des données à l'aide de la clé publique du serveur que le serveur peut décrypter à l'aide de sa clé privée .

Si cela semble déroutant, pensez à cela comme si le "serveur" avait envoyé à votre "navigateur" une valise ouverte (clé publique) protégée par un cadenas - une fois que vous placez quelque chose dans la valise et que vous verrouillez le cadenas, seul le "serveur" avec le la clé du cadenas (clé privée) peut voir ce qu'il y a à l'intérieur.

Ai-je vraiment besoin de HTTPS sur mon site WordPress ?

Oui. Quel que soit le type de trafic que votre site Web dessert (qu'il s'agisse d'informations personnellement identifiables (PII), de données de titulaire de carte ou d'images de chat), il n'y a absolument aucune raison pour que vous ne desserviez pas votre site Web via HTTPS.

Tout d'abord, lorsque vous exécutez votre site Web sur HTTP, les pirates peuvent facilement voler vos mots de passe et informations d'identification WordPress et pirater votre site Web. Ils peuvent faire tout cela en utilisant des outils disponibles gratuitement.

Outre les avantages en matière de sécurité et une meilleure expérience utilisateur, le nouveau protocole HTTP/2, qui offre plusieurs avantages en termes de performances, ne peut pas être utilisé sans TLS dans les navigateurs Web. En outre, HTTPS présente également des avantages d'optimisation pour les moteurs de recherche (SEO) et fait partie de l'algorithme de classement de recherche de Google.

Obtenir un certificat HTTPS TLS (alias certificat SSL)

Pour configurer HTTPS, vous aurez besoin d'un certificat TLS si vous configurez tout vous-même. Alors que vous verrez des dizaines d'offres de certificats TLS payants, vous pouvez obtenir un certificat TLS gratuit auprès d'une autorité de certification à but non lucratif appelée Let's Encrypt. Il n'y a absolument rien de différent entre un certificat que vous obtenez gratuitement de Let's Encrypt et celui que vous payez.

HTTPS sur l'hébergement WordPress mutualisé et managé

Veuillez noter que pour les solutions d'hébergement géré ou partagé, votre fournisseur d'hébergement peut facturer ou non l'ajout de HTTPS - si tel est le cas, avant de débourser de l'argent pour un certificat, demandez à leur service client si vous pouvez utiliser un certificat Let's Encrypt avec leur service à la place. Les forums de la communauté Let's Encrypt sont également une excellente ressource qui peut vous aider.

Configuration de WordPress HTTPS (application de TLS sur votre site WordPress)

Il existe plusieurs façons d'appliquer TLS sur votre site Web WordPress en fonction de votre configuration. Dans la plupart des cas, vous configurerez votre serveur Web pour rediriger tout le trafic HTTP vers HTTPS (reportez-vous au générateur de configuration SSL de Mozilla.

Vous devez également configurer WordPress pour écouter sur HTTPS. Vous pouvez le faire avec des plugins tels que Really Simple SSL ou WP force SSL. Dans cet exemple, nous verrons comment faire cela sans utiliser de plugins supplémentaires.

Configuration du serveur Web

La tête haute

  • Soyez prudent lorsque vous copiez/collez des configurations de serveur Web et assurez-vous de savoir exactement ce qu'ils font en consultant la documentation de votre serveur Web.
  • Vous pouvez trouver de nombreux exemples en ligne en utilisant %{HTTP_HOST} (Apache HTTP Server) ou $http_host (Nginx) - les deux pourraient rendre votre site Web vulnérable aux attaques d'en-tête d'hôte HTTP - à la place, tapez votre nom d'hôte dans votre configuration comme indiqué au dessous de.

Si vous utilisez Nginx, vous pouvez configurer les éléments suivants :

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

Sinon, si vous utilisez Apache HTTP Server, vous pouvez configurer les éléments suivants :

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Configuration de l'URL WordPress en HTTPS

Une fois que vous avez activé HTTPS sur votre serveur Web, vous devrez également configurer WordPress. En théorie, vous pouvez le faire manuellement : modifiez simplement l'adresse WordPress et l'adresse du site dans les paramètres généraux de WordPress. Vous devez également effectuer une recherche et un remplacement dans la base de données pour modifier tous les liens de votre site Web de HTTP à HTTPS.

[CAPTURE D'ÉCRAN]

Il est donc très probablement beaucoup plus facile d'utiliser un plugin pour basculer votre site Web WordPress vers HTTPS. Vous pouvez utiliser un plugin populaire comme Really Simple SSL pour vous aider tout au long du processus.

Application de TLS sur le tableau de bord WordPress

TLS n'est utile que s'il est utilisé. En tant que tel, vous voulez vous assurer que votre site WordPress prend non seulement en charge TLS, mais l'applique également. Étant donné que le tableau de bord WordPress doit toujours être accessible via HTTPS, WordPress inclut l'option de configuration spéciale FORCE_SSL_ADMIN, qui peut être définie sur true dans wp-config.php.

define('FORCE_SSL_ADMIN', true);

La tête haute

  • En fonction de la configuration et de la configuration de votre site Web (en particulier, si vous utilisez un proxy inverse), cela peut entraîner l'entrée de requêtes sur votre tableau de bord WordPress dans une boucle de redirection infinie. Pour plus d'informations sur la façon de résoudre ce problème, consultez la documentation de WordPress et testez toujours vos modifications dans un environnement intermédiaire avant de les déployer en production.
  • De plus, assurez-vous que TLS est déjà configuré et fonctionne correctement avant de définir FORCE_SSL_ADMIN sur true.

CONSEIL BONUS 1 : Ajout de la sécurité de transport stricte HTTP (HSTS)

Bien que rediriger tout votre trafic vers HTTPS soit une excellente décision, malheureusement, les attaquants peuvent encore avoir quelques tours dans leur manche. Une attaque connue sous le nom de bande SSL permettrait à un attaquant de tromper le navigateur pour qu'il parcoure le site en HTTP au lieu du HTTPS sécurisé, annulant ainsi votre dur labeur.

Pour plus de détails (très techniques) sur les attaques par bande SSL, regardez la conférence de Moxie Marlinspike ci-dessous.

En conséquence, les navigateurs implémentent désormais HTTP Strict Transport Security, ou HSTS. HSTS n'est rien d'autre qu'un simple en-tête HTTP qui indique au navigateur que ce site Web particulier ne doit jamais être accessible via HTTP, éliminant ainsi toute attaque par bande SSL.

Configuration de HSTS sur le serveur Web

La tête haute

  • N'activez pas HSTS tant que vous n'êtes pas à l'aise avec HTTPS - tous les visiteurs qui reçoivent cet en-tête HTTP ne pourront voir votre site que via HTTPS
  • Définissez toujours l'attribut max-age - éventuellement, vous pouvez choisir de définir une valeur faible la première fois que vous déployez HSTS (pour limiter les problèmes potentiels) et de l'augmenter lorsque vous êtes plus à l'aise avec HSTS

Si vous utilisez Nginx, vous pouvez configurer les éléments suivants dans le bloc de serveur écoutant sur le port 443 :

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

Alternativement, si vous utilisez Apache HTTP Server, vous pouvez configurer les éléments suivants dans votre VirtualHost écoutant sur le port 443 :

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Astuce bonus 2 : Configuration des chiffrements TLS

Pour s'assurer que le transfert de données entre le navigateur et le serveur est sécurisé, les deux parties conviennent d'utiliser ce que l'on appelle une suite de chiffrement - une combinaison d'algorithmes d'authentification, de cryptage et de code d'authentification de message (MAC) - pour négocier les paramètres de sécurité. , ainsi que pour transférer des données en toute sécurité.

Malheureusement, de nombreux chiffrements hérités présentent des failles de sécurité et ne sont plus particulièrement sûrs à utiliser. Bien que décider des chiffrements à utiliser soit une affaire délicate, le générateur de configuration SSL de Mozilla facilite le choix d'une suite de chiffrement TLS qui répond à vos besoins. Dans la mesure du possible, essayez d'utiliser les profils modernes ou intermédiaires, cependant, selon votre cas d'utilisation, en particulier si vous devez prendre en charge les navigateurs hérités ou répondre aux exigences réglementaires et de conformité, vous devrez peut-être utiliser des configurations de suite de chiffrement légèrement différentes.

Si vous utilisez Nginx, vous pouvez configurer les chiffrements TLS suivants (basés sur le profil intermédiaire Mozilla SSL Configuration Generator) :

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Alternativement, si vous utilisez Apache HTTP Server, vous configurez les chiffrements TLS suivants (basés sur le profil intermédiaire Mozilla SSL Configuration Generator) :

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

Vous pouvez également tester le score de configuration TLS de votre site Web à l'aide d'un outil gratuit appelé SSLabs pour encore plus d'informations techniques.

Mon WordPress fonctionne en HTTPS, est-il sécurisé ?

Les icônes de cadenas verts et les mots "sécurisé" à côté de la barre d'adresse de votre navigateur peuvent vous avoir amené à croire que HTTPS est une baguette magique qui résout tous les problèmes de sécurité du site Web. Malheureusement, ce n'est pas le cas. Le cadenas vert dans la barre du navigateur

HTTPS n'est qu'une petite partie de la sécurité de WordPress : il permet aux visiteurs de parcourir votre site Web via une connexion sécurisée . Cependant, il ne protège pas votre site Web comme un pare-feu WordPress, ni ne le rend plus sécurisé. Cela ne signifie pas non plus qu'il est plus sécurisé qu'un site Web fonctionnant sur HTTP. Comme toutes les autres défenses de sécurité, HTTPS aide à résoudre une partie du problème.

En d'autres termes, bien que vous deviez certainement implémenter et appliquer HTTPS, cela ne signifie pas que vous pouvez vous reposer tranquillement et ne plus jamais vous soucier de la sécurité. Vous devriez quand même :

  • Ajouter une authentification à deux facteurs
  • Installer un plugin de surveillance de l'intégrité des fichiers
  • Appliquer des politiques de mot de passe WordPress fortes
  • Conservez un journal d'activité WordPress comme enregistrement de tous les changements qui se produisent sur votre site Web
  • Utilisez un bon pare-feu.