HTTPS avec WordPress

Introduction au HTTPS

« HTTPS » désigne le début d’une adresse web : https://wordpress.org.
Cette partie de l’adresse peut se découper en deux morceaux :

  • « HTTP » est un protocole de transfert ;
  • le « S » signifie « sécurisé ».

Quand on parle de HTTPS dans le langage courant informatique, on désigne parfois le fait d’accéder à un site de façon sécurisée : la connexion entre vous et le site est cryptée et, de ce fait, les informations transmises ne sont pas compréhensibles par un tiers.
On peut consulter n’importe quel site en indiquant HTTPS au début de son adresse, cependant cela ne signifie pas pour autant que la connexion est sécurisée.
Pour qu’elle le soit, un certificat SSL doit être installé sur le serveur hébergeant le site.

Un moyen simple d’installer un certificat SSL est d’utiliser Let’s Encrypt, qui est une organisation à but non lucratif qui fournit des certificats SSL gratuitement et pour tout le monde.

La plupart des hébergeurs proposant un panneau d’administration comme cPanel vous permettront d’installer simplement un certificat SSL Let’s Encrypt.

Il existe des outils comme EFF Certbot tool (en anglais) qui permettent d’obtenir un certificat SSL et donnent des instructions pour l’installer sur différents serveurs et système d’exploitation.

Pour vos développements en local, vous pouvez créer un certificat auto-signé en utilisant OpenSSL (en anglais). Cependant l’usage est limité étant donné que les certificats générés ne seront pas reconnus par des tiers et pourront être utilisés uniquement sur des serveurs privés.

Le port par défaut pour les URL en HTTP est le 80, et celui par défaut des URL en HTTPS est le 443. Ces ports ne doivent être ouverts par aucun pare-feu de réseau. Apache comprend un module mod_ssl (en anglais) qui doit être activé et correctement configuré. Si vous utilisez Certbot, il peut automatiquement configurer et créer les réglages nécessaires de VirtualHost.

Haut ↑

Bonnes pratiques

Voici quelques bonnes pratiques à mettre en place pour proposer une connexion sécurisée aux personnes visitant votre site :

  • Utilisez HTTPS pour tous les sites accessibles au public.
  • Choisissez un hébergeur de qualité et réputé, la plupart des hébergeurs proposent le HTTPS comme service de base.
  • Utilisez un certificat SSL Let’s Encrypt, ils sont gratuits et faciles à mettre en place.
  • Si vous utilisez un CDN pour les contenus statiques, il doit être compatible SSL.

Haut ↑

Mise en place du HTTPS dans WordPress

Concernant WordPress, il n’y a rien de spécifique à mettre en place au niveau du serveur. WordPress est par défaut prêt pour utiliser des URL en HTTPS si le serveur est correctement configuré.

La seule chose à faire est d’utiliser https:// au début de l’URL de votre site pour l’adresse web de WordPress et l’adresse web du site.
Ces deux réglages se trouvent dans l’écran Réglages généraux, accessible depuis le menu Réglages puis Général.

Vous pouvez modifier ces réglages pour utiliser HTTPS après avoir installé votre site en utilisant HTTP.

Écran Réglages > Général

Depuis WordPress 5.7, l’outil de santé du site (Outils > Santé du site) vous indiquera si votre site n’utilise pas HTTPS et vous proposera, si c’est possible, d’effectuer automatiquement la mise à jour de ces réglages.

Outil de santé du site proposant la migration https

Haut ↑

Actions à mener après la mise en place du HTTPS

Haut ↑

Rediriger du HTTP vers le HTTPS

Si vous avez installé WordPress en utilisant une adresse en HTTP et que vous utilisez ensuite HTTPS, il est recommandé de rediriger toutes les requêtes en HTTP vers le HTTPS.

Il existe plusieurs manières de mettre en place cette redirection.

Haut ↑

Rediriger avec une extension

La plus simple consiste à utiliser une extension, par exemple Really Simple SSL, qui s’occupera pour vous de mettre en place les redirections nécessaires.

Haut ↑

Rediriger avec le fichier .htaccess

Vous pouvez également utiliser une règle dans votre fichier .htaccess, par exemple (pensez à remplacer example.com par votre nom de domaine) :

# BEGIN Redirect HTTP to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>
# END Redirect HTTP to HTTPS

Haut ↑

Rediriger avec Apache

Enfin, il est possible de créer deux entrées VirtualHost dans Apache, par exemple :

<VirtualHost *:80>
    ServerName example.com
    Redirect / https://example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /home/user/sites/example.com
    <Directory /home/user/sites/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    SSLEngine on
    SSLCertificateFile    /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem
    IncludeOptional /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

Haut ↑

Éviter le contenu mixte

On appelle « contenu mixte » le fait de proposer des ressources (images, fichiers) en HTTP sur une page en HTTPS.

Il est recommandé d’éviter cela, car les navigateurs afficheront un avertissement, à juste titre, informant que la page n’est pas totalement sécurisée.

La présence de contenu mixte peut se produire s’il existe des URL en HTTP dans votre base de données. Pour corriger cela, il faut remplacer ces URL par des URL en HTTPS, mais nous ne couvrirons pas cette étape dans cet article.
L’extension Really Simple SSL propose de corriger cela pour vous.

Haut ↑

Sur le même thème

Traduit par Marie Comet
Relu par Bruno Tritsch & Jenny Dupuy
Dernière mise à jour le 5 mars 2021

Contribuer à la documentation en français de WordPress