vendredi 25 septembre 2026

À propos

Contact

Outils & workflow

HTTPS en local pour tous vos projets WordPress avec mkcert

Générer une autorité de certification locale avec mkcert, émettre des certificats par projet et les brancher sur nginx, DDEV ou Docker, cookies sécurisés compris.

Par Clément Hadrot • 13 août 2026 • 5 min de lecture • Aucun commentaire
HTTPS en local pour tous vos projets WordPress avec mkcert

Certaines fonctionnalités WordPress se comportent différemment selon que le site est servi en HTTP ou en HTTPS, et ce n’est pas qu’une question d’apparence de cadenas dans le navigateur. Un cookie marqué avec l’attribut Secure — de plus en plus fréquent avec les extensions de paiement, d’authentification à deux facteurs ou certains blocs qui utilisent l’Interactivity API — n’est tout simplement jamais envoyé par le navigateur sur une connexion non chiffrée. Tester ce genre de fonctionnalité en local, sur un simple http://mon-site.test, peut donner l’impression d’un bug alors que le code fonctionne très bien : c’est l’absence de HTTPS qui bloque le cookie.

mkcert résout ce problème sans la lourdeur habituelle des certificats auto-signés, qui déclenchent des avertissements de sécurité que le navigateur refuse d’ignorer discrètement. Son principe : créer une autorité de certification locale, l’installer dans le magasin de confiance du système d’exploitation, puis émettre des certificats signés par cette autorité pour n’importe quel domaine local.

Installation et autorité locale

# macOS avec Homebrew
brew install mkcert
mkcert -install

# Linux avec certutil pour Firefox et NSS
sudo apt install libnss3-tools
mkcert -install

La commande mkcert -install génère une autorité de certification racine propre à la machine et l’ajoute au magasin de confiance système (et à celui de Firefox, qui gère le sien séparément via NSS). C’est cette étape, réalisée une seule fois par machine de développement, qui permet ensuite à n’importe quel certificat émis par mkcert d’être accepté sans avertissement par le navigateur.

Émettre un certificat par projet

mkcert site-client-atelier.test "*.site-client-atelier.test" localhost 127.0.0.1

# génère deux fichiers dans le dossier courant :
# site-client-atelier.test+3.pem       (certificat)
# site-client-atelier.test+3-key.pem   (clé privée)

Le caractère générique (*.site-client-atelier.test) permet de couvrir aussi les sous-domaines, utile pour un réseau multisite ou pour un sous-domaine d’API séparé du site principal.

L'essentiel à retenir : mkcert crée une autorité locale reconnue automatiquement par le système ; Un certificat par domaine local, généré en une commande ; Indispensable dès qu'un cookie porte l'attribut Secure

Brancher le certificat sur nginx

server {
    listen 443 ssl;
    server_name site-client-atelier.test;

    ssl_certificate     /chemin/vers/site-client-atelier.test+3.pem;
    ssl_certificate_key /chemin/vers/site-client-atelier.test+3-key.pem;

    root /var/www/site-client-atelier/public;
    index index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Brancher mkcert sur DDEV

DDEV intègre nativement mkcert : dès que mkcert est installé et son autorité enregistrée sur la machine, DDEV génère et applique automatiquement un certificat de confiance pour chaque projet, sans configuration supplémentaire à écrire. Un simple ddev start suffit à obtenir un site accessible en HTTPS avec un certificat déjà reconnu.

Brancher mkcert sur un environnement Docker Compose maison

Pour un environnement Docker Compose personnalisé, il suffit de monter les fichiers générés par mkcert dans le conteneur qui exécute le serveur web, en les référençant depuis la configuration :

# docker-compose.yml (extrait)
services:
  nginx:
    image: nginx:alpine
    volumes:
      - ./certificats/site-client-atelier.test+3.pem:/etc/nginx/certs/cert.pem:ro
      - ./certificats/site-client-atelier.test+3-key.pem:/etc/nginx/certs/key.pem:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    ports:
      - "443:443"

Le cas des cookies sécurisés dans wp-config.php

Une fois le site accessible en HTTPS localement, il reste à s’assurer que WordPress lui-même sait qu’il tourne en HTTPS, faute de quoi certains cookies restent tout de même émis sans l’attribut Secure. Deux constantes à vérifier dans wp-config.php, ou plus simplement le réglage de siteurl et home en https:// :

wp option get siteurl
wp option get home
# doivent tous deux renvoyer une URL en https:// pour que WordPress
# considère la connexion comme sécurisée de bout en bout

Un site local qui tourne en HTTP alors que la production est en HTTPS n’est jamais un environnement de test complet. On l’a compris tardivement sur un projet de paiement, où un bug de cookie n’apparaissait qu’en production — impossible à reproduire localement tant que le certificat n’était pas en place.

Renouvellement et durée de vie

Les certificats émis par mkcert ont une durée de validité longue par défaut (plusieurs années), ce qui évite d’avoir à les régénérer régulièrement comme on le ferait avec Let’s Encrypt en production. Seule l’autorité racine elle-même doit être réinstallée si l’on change de machine de développement, via un nouveau mkcert -install.

En résumé

mkcert transforme la mise en place de HTTPS local d’une corvée pleine d’avertissements de sécurité ignorés en une paire de commandes exécutées une fois par machine puis une fois par projet. Pour tout projet qui manipule des cookies sécurisés, des API de paiement ou des fonctionnalités qui se comportent différemment selon le protocole, ce n’est plus une option de confort mais un prérequis pour un test local fiable.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi