
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutions
Corrigez NET::ERR_CERT_COMMON_NAME_INVALID quand vous faites pointer un domaine avec le fichier hosts. mkcert, SAN, SSL local et HSTS expliqués.
Sommaire
- Comment corriger NET::ERR_CERT_COMMON_NAME_INVALID avec le fichier hosts
- Pourquoi cette erreur survient lors des tests avec le fichier hosts
- Tableau comparatif des solutions
- Solution recommandée : Générer un certificat SAN avec mkcert
- 1. Installer mkcert
- 2. Initialiser l'autorité de certification locale
- 3. Créer le certificat couvrant vos domaines déclarés dans le fichier hosts
- 4. Configurer votre serveur web local (exemple Nginx)
- Le piège des extensions TLD : pourquoi éviter .dev et .app
L'erreur NET::ERR_CERT_COMMON_NAME_INVALID survient lorsque le certificat SSL/TLS présenté par le serveur web ne correspond pas au nom de domaine saisi dans le navigateur. Quand vous utilisez le fichier hosts pour router un domaine de test ou de préproduction vers votre serveur local, le certificat servi par défaut est rejeté par les contrôles de sécurité du navigateur.
Comment corriger NET::ERR_CERT_COMMON_NAME_INVALID avec le fichier hosts
Pour corriger NET::ERR_CERT_COMMON_NAME_INVALID lors de l'utilisation du fichier hosts, installez une autorité locale avec `mkcert -install`, générez un certificat TLS incluant vos noms d'hôtes et sous-domaines (via les extensions SAN), puis configurez votre serveur web local (Nginx, Caddy ou Apache) pour servir ce certificat sur le port 443.
Pourquoi cette erreur survient lors des tests avec le fichier hosts
Lorsque vous ajoutez une ligne dans votre fichier hosts :
127.0.0.1 monsite-client.testLe flux réseau se déroule ainsi :
monsite-client.test et obtient 127.0.0.1 grâce au fichier hosts.127.0.0.1.localhost ou un autre projet).monsite-client.test) avec les noms autorisés dans le certificat (champ Subject Alternative Name ou SAN).NET::ERR_CERT_COMMON_NAME_INVALID.Consultez également notre guide sur la configuration HTTPS en local et la résolution de l'autorité de certification invalide.
Tableau comparatif des solutions
| Approche | Niveau de sécurité | Compatibilité navigateurs | Cas d'usage recommandé |
|---|---|---|---|
Certificat avec mkcert | Très élevé (CA locale de confiance) | Parfaite (Chrome, Firefox, Safari) | Développement local sur domaines .test |
| Proxy Caddy automatique | Très élevé | Automatique | Projets avec microservices et reverse proxy |
| Certificat auto-signé sans SAN | Faible | Rejeté par Chrome moderne | Déconseillé |
| Let's Encrypt DNS challenge | Élevé | Universelle | Serveurs de préproduction accessibles en staging |
Solution recommandée : Générer un certificat SAN avec mkcert
Depuis la dépréciation du champ Common Name historique au profit du standard Subject Alternative Name (SAN, RFC 2818), tout certificat moderne doit lister explicitement les domaines cibles.
1. Installer mkcert
Sur macOS (Homebrew) :
brew install mkcert
brew install nss # Recommandé pour le support de FirefoxSur Linux (Ubuntu/Debian) :
sudo apt install libnss3-tools
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcertSur Windows (PowerShell via Chocolatey) :
choco install mkcert2. Initialiser l'autorité de certification locale
mkcert -installCette commande ajoute l'autorité racine dans le magasin de certificats de votre système d'exploitation.
3. Créer le certificat couvrant vos domaines déclarés dans le fichier hosts
Spécifiez tous vos domaines et wildcards dans la même commande :
mkcert monprojet.test "*.monprojet.test" api.monprojet.test localhost 127.0.0.1La commande génère deux fichiers clés dans votre répertoire courant :
monprojet.test+4.pem(le certificat public)monprojet.test+4-key.pem(la clé privée)
4. Configurer votre serveur web local (exemple Nginx)
server {
listen 443 ssl http2;
server_name monprojet.test api.monprojet.test;
ssl_certificate /chemin/vers/monprojet.test+4.pem;
ssl_certificate_key /chemin/vers/monprojet.test+4-key.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
}
}Rechargez Nginx (sudo nginx -s reload) et rafraîchissez votre page. Le cadenas de sécurité valide la connexion sans erreur de nom commun.
Le piège des extensions TLD : pourquoi éviter .dev et .app
Certains développeurs choisissent des extensions comme monprojet.dev ou monprojet.app dans leur fichier hosts.
- Les extensions
.devet.appsont des domaines de premier niveau réels gérés par Google Registry. - Ils sont inscrits dans la liste HSTS preload intégrée aux navigateurs.
- Tout accès en HTTP est immédiatement converti en HTTPS strict, et le navigateur interdit formellement de cliquer sur "Continuer vers le site" si le certificat n'est pas irréprochable.
Pour vos configurations de test dans /etc/hosts, privilégiez toujours les TLD réservés définis par la RFC 2606 :
.test(ex:client.test).example.localhost
Questions fréquentes
Cette erreur indique que le certificat SSL/TLS renvoyé par le serveur web ne contient pas le nom de domaine exact saisi dans la barre d’adresse de votre navigateur.
Le fichier hosts gère uniquement la couche réseau (résolution IP). Le certificat SSL est délivré par le serveur web lors du handshake TLS après l’établissement de la connexion IP.
Utilisez l’outil mkcert pour créer une autorité de certification locale reconnue par votre système et générer un certificat couvrant vos domaines de test (.test ou .local).
Sur les TLD réservés comme .dev ou .app, le mécanisme HSTS est imposé par défaut par Google, empêchant tout contournement manuel d’un certificat non conforme.
Articles similaires
Corriger mkcert NET::ERR_CERT_AUTHORITY_INVALID
Corrigez NET::ERR_CERT_AUTHORITY_INVALID avec mkcert sur Mac : CA locale, certificat, domaine exact, Chrome, Firefox et hosts.
Équipe Sleezr
Outils développeurs
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.
Équipe Sleezr
ERR_CONNECTION_REFUSED sur un domaine du fichier hosts : solutions
Votre domaine personnalisé dans le fichier hosts renvoie ERR_CONNECTION_REFUSED ? Vérifiez le port, le binding 0.0.0.0 vs 127.0.0.1, Docker et le reverse proxy.
Équipe Sleezr
Outils développeurs
EACCES: permission denied sur /etc/hosts : comment corriger
Corrigez l’erreur EACCES permission denied sur /etc/hosts en Node.js, bash et sous Windows. Droits root, sudoers, scripts CLI et solutions sécurisées.
Équipe Sleezr
Outils développeurs
ERR_TOO_MANY_REDIRECTS et fichier hosts : stopper la boucle
Boucle de redirection infinie (ERR_TOO_MANY_REDIRECTS) avec le fichier hosts ? Solutions pour WordPress, reverse proxy Nginx, HTTPS et cache 301.
Équipe Sleezr
Outils développeurs
getaddrinfo ENOTFOUND dans Docker et Node.js : solutions
getaddrinfo ENOTFOUND ou EAI_AGAIN malgré une entrée dans /etc/hosts ? Résolvez l’isolation DNS Docker, le binding Node.js et les erreurs libc.
Équipe Sleezr
Outils développeurs