CHECKCYBER

ERR_SSL_PROTOCOL_ERROR : diagnostic et correction

« Ce site ne peut pas fournir de connexion sécurisée — ERR_SSL_PROTOCOL_ERROR ». Contrairement aux avertissements de certificat, celui-ci n'offre même pas la possibilité de continuer : la connexion échoue avant d'être établie. Le navigateur et le serveur n'ont pas réussi à se mettre d'accord sur la façon de chiffrer l'échange, ou la réponse reçue n'avait rien d'une réponse TLS valide.

C'est une erreur générique, donc frustrante : elle recouvre une dizaine de causes distinctes, du simple protocole obsolète au serveur qui répond en clair sur le port 443. La bonne nouvelle est qu'un test méthodique la réduit très vite à une cause unique. Voici la démarche, en commençant par déterminer si le problème est chez vous ou sur le serveur.

Étape 0 : le problème vient-il de vous ou du serveur ?

La question à trancher en premier, car elle divise le travail par deux. Ouvrez le site depuis un autre réseau (données mobiles plutôt que Wi-Fi) ou utilisez un service de test en ligne qui interroge le serveur depuis l'extérieur. Si le site répond correctement ailleurs, la cause est locale : votre navigateur, votre antivirus, votre réseau d'entreprise.

Si l'échec est identique depuis toutes les origines, la cause est côté serveur — et c'est là qu'il faut agir si le site est le vôtre. Un scan externe est le moyen le plus rapide de trancher : il vous dira quelles versions de TLS le serveur accepte réellement, si le certificat est servi correctement et si le port 443 répond bien en TLS.

Causes côté visiteur (le site marche pour les autres)

Le trio classique : antivirus, extensions, cache. Les suites de sécurité qui inspectent le trafic chiffré s'intercalent dans la négociation TLS et la cassent parfois, notamment après une mise à jour du navigateur. Désactivez temporairement l'option d'analyse HTTPS pour tester. Côté navigateur, effacez l'état SSL et les données de navigation, puis testez en navigation privée avec les extensions désactivées : un VPN ou un bloqueur mal configuré produit exactement ce symptôme.

Vérifiez ensuite que votre navigateur n'est pas resté sur une version ancienne : les navigateurs modernes ont retiré le support de TLS 1.0 et 1.1, et à l'inverse un navigateur trop ancien ne connaît pas TLS 1.3. Sur un réseau d'entreprise ou d'école, un proxy d'inspection peut également bloquer certaines négociations — testez depuis une connexion personnelle pour le confirmer.

Cas particulier de Windows : une horloge fausse, une pile TLS désactivée dans les options Internet (TLS 1.2 décoché) ou un système obsolète empêchent la négociation. Réactivez TLS 1.2 dans les options Internet, onglet Avancé.

Causes côté serveur : les cinq classiques

Cause 1, aucune version de TLS commune. Un serveur durci qui n'accepte plus que TLS 1.3 face à un client ancien, ou à l'inverse un serveur bloqué sur TLS 1.0/1.1 face à un navigateur moderne qui a retiré ces protocoles : dans les deux cas, aucune version commune, donc échec. La configuration recommandée aujourd'hui accepte TLS 1.2 et 1.3, et rien en dessous.

Cause 2, aucune suite de chiffrement commune. Même logique, un cran plus bas : le serveur n'accepte que des suites que le client refuse (ou l'inverse). Cela arrive après un durcissement trop agressif copié depuis un article de blog. Repartez d'une configuration de référence maintenue plutôt que d'une liste artisanale.

Cause 3, le serveur répond en clair sur le port 443. Erreur de configuration fréquente sur nginx quand la directive ssl manque dans le bloc listen : le navigateur envoie une poignée de main TLS et reçoit du HTTP en clair, ce qui produit exactement cette erreur.

Cause 4, un problème de SNI ou de certificat mal chargé sur un serveur qui héberge plusieurs sites : le vhost par défaut répond à la place du bon. Cause 5, plus rare, une taille de clé ou un paramètre Diffie-Hellman refusé par le navigateur (clé RSA inférieure à 2048 bits, paramètres DH faibles).

Diagnostiquer : quelles versions le serveur accepte-t-il ?
openssl s_client -connect exemple.com:443 -tls1_2 </dev/null
openssl s_client -connect exemple.com:443 -tls1_3 </dev/null
# « no protocols available » ou « handshake failure » = version refusée
nginx — configuration TLS moderne
server {
    listen 443 ssl;
    http2 on;
    server_name exemple.com;

    ssl_certificate     /etc/letsencrypt/live/exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
}
Apache — versions acceptées
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLHonorCipherOrder off
Recharger après modification (indispensable)
sudo nginx -t && sudo systemctl reload nginx
# ou
sudo apachectl configtest && sudo systemctl reload apache2

Vérifier la correction

Rechargez toujours le service après modification, puis retestez depuis un appareil qui n'a jamais visité le site — le cache TLS du navigateur masque volontiers un correctif partiel. Testez également les variantes avec et sans www, ainsi que les sous-domaines, chacun pouvant avoir sa propre configuration.

Un audit externe confirme l'ensemble en une passe : versions de TLS acceptées, robustesse de la clé du certificat, redirection HTTP vers HTTPS et présence des en-têtes de sécurité. C'est aussi la meilleure façon de vérifier que le durcissement n'a pas laissé de trou ailleurs, car ces erreurs surviennent souvent au milieu d'un chantier de configuration.

[ FAQ // QUESTIONS FRÉQUENTES ]

Quelle différence avec « Votre connexion n’est pas privée » ?

L'avertissement de connexion non privée concerne le certificat : la négociation a réussi, mais l'identité du serveur n'est pas vérifiable, et le navigateur propose de passer outre. ERR_SSL_PROTOCOL_ERROR intervient plus tôt, pendant la négociation : aucune connexion n'a pu être établie, il n'y a donc rien à contourner.

L’erreur n’apparaît que dans Chrome, pas dans Firefox. Pourquoi ?

Parce que les navigateurs n'acceptent pas exactement les mêmes protocoles et suites de chiffrement, et ne les retirent pas au même rythme. Un serveur limité à des protocoles anciens échouera d'abord dans le navigateur le plus strict. Cela indique presque toujours une configuration serveur obsolète, à corriger sans attendre que les autres navigateurs suivent.

Faut-il désactiver TLS 1.0 et 1.1 ?

Oui, ils sont obsolètes, vulnérables et refusés par tous les navigateurs à jour ; les conserver n'apporte aucune compatibilité utile et fait échouer des audits de conformité. Gardez TLS 1.2 et 1.3.

Mon hébergeur est mutualisé, je n’ai pas accès à la configuration TLS.

Dans ce cas, les leviers sont limités à l'interface de l'hébergeur : réémettez le certificat depuis le panneau (cPanel, Plesk), vérifiez que le domaine pointe bien vers le bon serveur, puis ouvrez un ticket en joignant le résultat d'un test externe. La configuration TLS est de la responsabilité de l'hébergeur sur ce type d'offre.

[ PASSEZ À L’ACTION ]

Votre site est-il concerné ?

Lancez un audit de surface gratuit et obtenez en quelques secondes la liste exacte de vos failles, avec le correctif pour chacune. Anonyme, sans inscription.

▶ Auditer mon site

[ À LIRE AUSSI ]

[ CheckCyber // MIS À JOUR LE 2026-07-27 ]