Message d’erreur
net::ERR_SSL_PROTOCOL_ERROR
Le code apparaît sous la forme « ERR_SSL_PROTOCOL_ERROR » sur la page d’erreur et « net::ERR_SSL_PROTOCOL_ERROR » dans les outils d’automatisation et les DevTools.
Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"
Ce que cela signifie
Chrome n’a pas pu mener à bien un handshake TLS, car la réponse du serveur ne respectait pas le protocole : le plus souvent, ce n’était pas du TLS du tout (un serveur HTTP en clair sur ce port), ou le serveur a envoyé des données de handshake malformées ou inattendues. La page affiche « This site can’t provide a secure connection — <host> sent an invalid response ». Les certificats ne sont pas en cause.
Pourquoi cela se produit
https:// vers un port qui sert du HTTP en clair
fréquenteDes serveurs de développement, des ports d’administration ou un serveur dont l’écouteur TLS est absent.
HSTS impose https:// à un site de développement en HTTP en clair
fréquenteLes domaines de la liste de préchargement HSTS (comme .dev et .app) ou les hôtes qui ont déjà envoyé Strict-Transport-Security sont toujours basculés vers https://, même lorsque le serveur local ne parle que HTTP.
Un serveur TLS mal configuré ou défaillant
occasionnelleDes proxys configurés avec un mauvais protocole vers le backend, des équipements bogués ou un serveur qui ferme la connexion en plein handshake.
Interférence d’un antivirus ou d’un pare-feu
occasionnelleLes fonctions d’analyse HTTPS et les filtres réseau qui font échouer le handshake produisent la même erreur sur des sites par ailleurs sains.
Comment corriger l’erreur
- 1.
Vérifier le protocole que parle le port
Si c’est du HTTP en clair qui répond, utilisez le port TLS ou activez TLS sur cet écouteur.
bash curl -si http://www.example.com:8080/ | head -1 # plain HTTP answers? openssl s_client -connect www.example.com:443 -servername www.example.com -brief </dev/null - 2.
En développement : effacer l’entrée HSTS ou utiliser HTTPS en local
Supprimez l’entrée HSTS de l’hôte dans chrome://net-internals/#hsts (impossible pour les domaines préchargés) ou dotez le serveur de développement d’un certificat approuvé localement.
text Local development on a domain with HSTS (e.g. *.dev, or a site you once visited over HTTPS): open chrome://net-internals/#hsts, "Delete domain security policies" for the host, or serve the dev site over HTTPS with a locally trusted certificate (mkcert). - 3.
Propriétaires de sites : activer TLS là où https:// est servi
Configurez l’écouteur avec TLS et un certificat, puis testez le handshake depuis l’extérieur.
text Site owners: make sure the port that browsers reach with https:// has TLS enabled (nginx: "listen 443 ssl;" plus ssl_certificate / ssl_certificate_key).