
mkcert SSL local sur Mac : HTTPS en 2 minutes (2026)
Configurez mkcert ssl local sur Mac : installation, CA de confiance, certificats localhost et .test. Vite, Next.js, Docker + correction NET::ERR_CERT_AUTHORITY_INVALID.
mkcert ssl local est le moyen le plus rapide d'obtenir un HTTPS de confiance sur Mac pour localhost, 127.0.0.1 et vos domaines .test - sans avertissements de certificat.
mkcert ssl local - installation en 3 commandes
brew install mkcert
mkcert -install
mkcert -cert-file certs/local-cert.pem -key-file certs/local-key.pem localhost 127.0.0.1 ::1 monprojet.test "*.monprojet.test"Pointez votre serveur de dev vers les fichiers .pem, puis ouvrez https://localhost:3000.
Erreur NET::ERR_CERT_AUTHORITY_INVALID ? → Corriger les erreurs mkcert Hosts ou DNS modifiés ? → Vider le cache DNS Mac d'abord.
Vous développez une PWA et les Service Workers refusent de s'activer ? Geolocation, Clipboard et WebRTC exigent un contexte sécurisé (HTTPS). mkcert règle ça en moins de deux minutes.
Pourquoi mkcert plutôt qu'OpenSSL auto-signé ?
| Approche | Confiance navigateur | Temps | Usage |
|---|---|---|---|
| mkcert | Cadenas vert | ~2 min | Dev quotidien |
| OpenSSL auto-signé | Avertissements | ~10 min | Tests ponctuels |
| ngrok / tunnel | URL publique HTTPS | ~5 min | Webhooks, mobile |
Comment configurer le HTTPS local sur Mac avec mkcert
Pour configurer un certificat SSL local sur Mac, installez mkcert, faites confiance à son autorité de certification locale, puis générez un certificat pour vos domaines :
- Installez mkcert avec Homebrew :
brew install mkcert. - Lancez
mkcert -installune fois pour faire confiance à la CA locale. - Générez les certificats pour
localhost,127.0.0.1,::1et vos domaines.test. - Pointez votre serveur de dev vers les fichiers
.pemgénérés. - Redémarrez le navigateur s'il affiche encore un avertissement de certificat.
brew install mkcert
mkcert -install
mkcert -cert-file certs/local-cert.pem -key-file certs/local-key.pem localhost 127.0.0.1 ::1 monprojet.test "*.monprojet.test"Pourquoi HTTPS en local ?
APIs qui requièrent HTTPS
De nombreuses APIs web modernes ne fonctionnent qu'en contexte sécurisé (HTTPS) :
- Service Workers : Requis pour les PWA
- Geolocation API : Position GPS
- Clipboard API : Copier/coller
- WebRTC : Vidéo/audio
- Web Bluetooth : Appareils Bluetooth
- Notifications Push : Push API
Autres avantages
- Parité dev/prod : Même comportement partout
- Cookies sécurisés : Test des attributs Secure et SameSite
- HTTP/2 : Requiert HTTPS
- Crédibilité : Pas d'avertissement navigateur
Installation de mkcert
Qu'est-ce que mkcert ?
mkcert est un outil créé par Filippo Valsorda qui :
- Crée une autorité de certification (CA) locale
- Installe cette CA dans votre système et navigateurs
- Génère des certificats signés par cette CA
Résultat : vos certificats locaux sont reconnus comme valides.
Installation sur Mac
# Avec Homebrew
brew install mkcert
# Installer les certificats racine
mkcert -installVous verrez un message demandant votre mot de passe pour installer la CA dans le trousseau système.
Vérifier l'installation
mkcert -CAROOTAffiche le dossier contenant votre CA locale.
Créer des certificats
Pour localhost
mkcert localhost 127.0.0.1 ::1Crée deux fichiers :
localhost+2.pem: Le certificatlocalhost+2-key.pem: La clé privée
Pour un domaine personnalisé
mkcert monprojet.testAvec wildcard (sous-domaines)
mkcert monprojet.test "*.monprojet.test"Permet d'utiliser api.monprojet.test, admin.monprojet.test, etc.
Certificat tout-en-un
mkcert localhost 127.0.0.1 ::1 monprojet.test "*.monprojet.test"Configurer votre serveur
Node.js / Express
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
const options = {
key: fs.readFileSync('./localhost+2-key.pem'),
cert: fs.readFileSync('./localhost+2.pem')
};
https.createServer(options, app).listen(3000, () => {
console.log('HTTPS server running on https://localhost:3000');
});Vite
// vite.config.js
import { defineConfig } from 'vite';
import fs from 'fs';
export default defineConfig({
server: {
https: {
key: fs.readFileSync('./localhost+2-key.pem'),
cert: fs.readFileSync('./localhost+2.pem')
}
}
});Next.js
// next.config.js avec serveur custom
const { createServer } = require('https');
const { parse } = require('url');
const next = require('next');
const fs = require('fs');
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
const httpsOptions = {
key: fs.readFileSync('./localhost+2-key.pem'),
cert: fs.readFileSync('./localhost+2.pem')
};
app.prepare().then(() => {
createServer(httpsOptions, (req, res) => {
const parsedUrl = parse(req.url, true);
handle(req, res, parsedUrl);
}).listen(3000);
});Webpack Dev Server
// webpack.config.js
const fs = require('fs');
module.exports = {
devServer: {
https: {
key: fs.readFileSync('./localhost+2-key.pem'),
cert: fs.readFileSync('./localhost+2.pem')
}
}
};Utiliser avec des domaines personnalisés
Configurer le fichier hosts
Pour utiliser monprojet.test au lieu de localhost :
# /etc/hosts
127.0.0.1 monprojet.test
127.0.0.1 api.monprojet.testCréer le certificat correspondant
mkcert monprojet.test "*.monprojet.test"Configurer le serveur
Utilisez les nouveaux fichiers générés dans votre configuration serveur.
Cas d'usage avancés
Laravel Valet
Valet intègre mkcert nativement :
valet secure monprojetC'est tout ! Valet génère et configure automatiquement les certificats.
Docker
# docker-compose.yml
services:
web:
volumes:
- ./certs:/etc/nginx/certs:ro
environment:
- VIRTUAL_HOST=monprojet.test
- CERT_NAME=monprojet.testMAMP Pro
- Préférences > Hosts
- Sélectionnez votre host
- SSL > Activer
- Importez vos certificats mkcert
Dépannage
"NET::ERR_CERT_AUTHORITY_INVALID"
La CA n'est pas installée dans le navigateur.
mkcert -installPuis redémarrez votre navigateur.
Chrome ignore toujours le certificat
Chrome peut nécessiter un redémarrage complet :
# Mac
killall "Google Chrome"
open -a "Google Chrome"Firefox ne reconnaît pas la CA
Firefox utilise son propre magasin de certificats. Installez-la manuellement :
- Préférences > Vie privée et sécurité > Certificats
- Voir les certificats > Autorités > Importer
- Sélectionnez rootCA.pem depuis
mkcert -CAROOT
Bonnes pratiques
Organisation des certificats
~/certs/
├── localhost/
│ ├── localhost+2.pem
│ └── localhost+2-key.pem
├── monprojet.test/
│ ├── monprojet.test+1.pem
│ └── monprojet.test+1-key.pem
└── README.mdNe jamais committer les clés
# .gitignore
*.pem
certs/Script de setup projet
#!/bin/bash
# setup-certs.sh
mkdir -p certs
cd certs
mkcert localhost 127.0.0.1 ::1 monprojet.test "*.monprojet.test"
echo "Certificats créés dans ./certs/"Dépannage rapide
Chrome affiche NET::ERR_CERT_AUTHORITY_INVALID
Relancez :
mkcert -install
killall "Google Chrome"
open -a "Google Chrome"Si l'erreur persiste, vérifiez que le certificat couvre exactement le domaine ouvert dans la barre d'adresse.
Le certificat ne couvre pas le sous-domaine
Générez un wildcard :
mkcert monprojet.test "*.monprojet.test"Le serveur utilise l'ancien certificat
Arrêtez le serveur, supprimez les anciens fichiers du projet, régénérez dans certs/, puis mettez à jour la configuration.
Le domaine pointe vers le mauvais serveur
Vérifiez hosts et DNS :
dscacheutil -q host -a name monprojet.test
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponderPour le guide complet de l'erreur, lisez corriger mkcert NET::ERR_CERT_AUTHORITY_INVALID.
Alternatives à mkcert
Certificats auto-signés (déconseillé)
Fonctionnent mais génèrent des avertissements navigateur constants.
Tunnels (ngrok, localtunnel)
Exposent votre localhost sur Internet avec HTTPS. Utile pour tests mobiles ou webhooks.
Caddy
Serveur web avec HTTPS automatique, même en local.
Conclusion
HTTPS en local n'est plus optionnel en 2026. Avec mkcert, l'installation prend 2 minutes et vous évite des heures de frustration avec les APIs modernes. Combinez-le avec des domaines .test gérés via ToggleHosts pour un environnement de développement professionnel.
Questions fréquentes
Certaines APIs modernes (Service Workers, Geolocation, Clipboard, WebRTC) ne fonctionnent qu'en HTTPS. De plus, cela évite les différences entre dev et production.
mkcert est un outil qui crée une autorité de certification locale et génère des certificats SSL de confiance pour vos domaines de développement.
Pour le développement local, oui. Ne jamais utiliser mkcert en production. Les certificats ne sont valides que sur votre machine.
Après avoir installé mkcert, exécutez 'mkcert localhost' pour créer les certificats, puis configurez votre serveur pour les utiliser.
Articles similaires
Modifier le fichier hosts sur Mac (2026)Modifier le fichier hosts
Modifier le fichier hosts sur Mac (2026)
7 min de lecture
Corriger mkcert NET::ERR_CERT_AUTHORITY_INVALIDDépannage
Corriger mkcert NET::ERR_CERT_AUTHORITY_INVALID
6 min de lecture
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutionsDépannage
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutions
4 min de lecture