Un site protégé en HTTPS qui ne se charge pas via le WAF, ou qui fonctionne bien en HTTP mais tombe en panne dès que le TLS est activé, échoue presque toujours quelque part dans la négociation SSL/TLS. Voici l'ordre de vérification qui permet de trouver de quel côté la négociation échoue réellement — version de protocole, suite de chiffrement, chaîne de certificats ou authentification du client — et les cas de terrain derrière chacun.
By Yuwen Zhang (Atlas), founder of AtlasCommTech — 13 years of carrier & enterprise network deployments · Updated July 2026
Les pannes de site HTTPS sur un WAF semblent mystérieuses jusqu'à ce qu'on remarque qu'elles ne viennent jamais que de trois endroits.
Un site protégé injoignable en HTTPS se répartit presque toujours en trois catégories : un problème de configuration (le déchiffrement n'est même pas activé, ou le mauvais fichier de certificat a été mis au mauvais endroit), un problème de protocole/algorithme SSL (le client et le WAF ne s'accordent pas sur une version de protocole ou une suite de chiffrement), ou un problème de certificat (la clé publique, la clé privée ou la chaîne téléchargée ne correspond pas réellement à ce que présente le serveur). Classer d'abord le symptôme dans l'une de ces trois catégories évite l'essentiel des allers-retours.
Voici l'ordre de vérification pour chaque catégorie, les commandes de capture de paquets et OpenSSL qui montrent exactement où la négociation échoue, les pièges qui expliquent la plupart de ces tickets, et 5 réponses de FAQ tirées de déploiements réels.
Le WAF se trouve au milieu de deux négociations TLS indépendantes — client-vers-WAF et WAF-vers-serveur — et la panne ne se situe presque jamais dans les deux à la fois.
Placer d'abord la panne sur ce schéma indique s'il faut continuer à lire la configuration, ou passer directement à une capture de paquets.
Les légendes du schéma restent en anglais pour la clarté technique.
Une fois qu'on sait que le site échoue pendant la négociation SSL plutôt qu'après, les cases de gauche — déchiffrement non configuré, version de protocole, suite de chiffrement, incompatibilité certificat/clé — couvrent presque tout ce qui ne va vraiment pas. Les deux de droite montrent à quoi ressemble une panne de négociation vue de l'extérieur, ou une limitation structurelle plutôt qu'une erreur de configuration.
Configuration, négociation de protocole et certificats laissent chacun une signature différente — voici où regarder pour chacun, et les commandes exactes.
Avant tout, confirmez que le site protégé est bien configuré pour terminer le TLS.
$ openssl x509 -in leaf.crt -noout -subject -issuer
subject=CN=www.example.com
issuer=CN=ExampleCA-Intermediate
// a CN with the site's own domain in "subject" -> this is the public/leaf certificate
$ openssl x509 -in maybe-ca.crt -noout -subject -issuer
subject=CN=ExampleCA-Intermediate, O=Example CA
issuer=CN=ExampleCA-Root
// subject carries only a CA/organization name, no site domain -> this is a CA/intermediate cert,
// it belongs in the certificate-chain slot, not the "public key" slot
Si la configuration est correcte, capturez le Client Hello et comparez-le à ce que le WAF acceptera.
$ openssl s_client -connect waf-vip:443 -tls1
...
40736:error:...:tlsv1 alert protocol version:...
// the test only offered TLS1.0 -> the WAF's minimum accepted version is TLS1.1
$ openssl s_client -connect waf-vip:443 -tls1_2 -cipher 'ECDHE-RSA-AES128-GCM-SHA256'
...
Cipher : ECDHE-RSA-AES128-GCM-SHA256
// re-run with the cipher list read from the real Client Hello capture to confirm
// which of the client's offered suites the WAF actually accepts
La négociation dépasse l'étape de la version et du chiffrement mais échoue encore autour du message Certificate — la clé privée et la chaîne ne correspondent presque jamais par accident.
$ openssl x509 -noout -modulus -in server.crt | openssl md5
(stdin)= 3f2504e04f8964ba649...
$ openssl rsa -noout -modulus -in server.key | openssl md5
(stdin)= 3f2504e04f8964ba649...
// the two hashes must match -- if they don't, this private key was not generated for this certificate
Une fois que les catégories ci-dessus ont indiqué où se situe le problème, ces cinq causes expliquent l'essentiel de ce qui ne va vraiment pas.
SYMPTÔMELa négociation échoue avant même l'échange de tout certificat — la connexion se réinitialise dès que la négociation TLS démarre.
CAUSELe WAF n'accepte par défaut que TLS 1.1 et TLS 1.2. Un client — ou une ancienne intégration, un scanner, une vérification de santé d'équilibreur de charge héritée — qui ne propose que SSLv2, SSLv3 ou TLS 1.0 est rejeté dès l'étape de version de protocole, avant même que les certificats n'entrent en jeu.
SOLUTIONCapturez le Client Hello pour confirmer la version réellement proposée. Si le client ne peut vraiment pas être mis à niveau, faites remonter au service technique pour évaluer l'activation délibérée d'une version de protocole plus ancienne, en sachant que cela abaisse le plancher de sécurité pour tous les autres sites partageant la pile TLS terminée par ce WAF.
SYMPTÔMELa version TLS correspond, mais la négociation échoue quand même juste après le Client Hello.
CAUSELe client ne propose que des suites de chiffrement faibles ou obsolètes (RC4, 3DES, suites non-PFS) que la politique de chiffrement par défaut du WAF rejette. Si aucune des suites proposées par le client ne figure dans la liste acceptée par le WAF, il n'y a aucune suite de chiffrement sur laquelle les deux parties puissent réellement s'accorder.
SOLUTIONLisez la liste exacte des suites depuis la capture du Client Hello, puis assouplissez la suite de chiffrement acceptée par le WAF dans sa console web juste assez pour créer un recoupement — en traitant cela comme un compromis délibéré et documenté contre la sécurité, pas comme un réglage par défaut.
SYMPTÔMELe téléchargement du certificat « réussit » dans la console, mais le HTTPS échoue toujours, ou le navigateur signale une erreur de certificat.
CAUSEUn certificat public (feuille) et un certificat d'AC/intermédiaire se ressemblent dans une visionneuse ordinaire, si bien que les deux sont intervertis — l'emplacement censé recevoir la propre clé publique du site se retrouve avec le certificat d'AC, ou inversement.
SOLUTIONOuvrez le certificat et vérifiez son sujet : un certificat portant le propre nom de domaine du site dans la ligne de sujet est la clé publique/feuille ; un certificat ne portant qu'un nom d'AC sans domaine du site est l'AC/intermédiaire, et doit aller dans l'emplacement de la chaîne de certificats, pas dans celui de la clé publique.
SYMPTÔMELa négociation dépasse l'étape version/chiffrement, semble parfois même à moitié établie, mais échoue finalement, ou le navigateur signale une incompatibilité de certificat.
CAUSELa clé privée téléchargée est un reliquat d'un renouvellement de certificat antérieur, d'un domaine différent, ou d'un certificat réémis qui a remplacé celui avec lequel la clé avait été générée à l'origine — les deux ne forment plus une paire de clés valide.
SOLUTIONHachez le module du certificat et celui de la clé privée et confirmez qu'ils sont identiques. S'ils ne correspondent pas, faites réémettre ensemble la bonne clé et le bon certificat, plutôt que de mélanger une ancienne clé avec un nouveau certificat.
SYMPTÔMETout semble correct côté configuration du WAF, mais un site protégé par une authentification mutuelle/à deux facteurs (un Ukey ou un jeton matériel) ne fonctionne toujours pas une fois le WAF dans le chemin.
CAUSELe WAF termine la session TLS du client et rétablit une session TLS distincte vers le serveur — il ne transmet pas le certificat client tel quel. Un site exigeant que le serveur vérifie directement le propre certificat du client ne peut structurellement pas être protégé par un WAF en mode reverse-proxy ou proxy transparent.
SOLUTIONExcluez ce site précis du déchiffrement/de la protection HTTPS du WAF, ou repensez l'architecture d'authentification du client pour que la vérification d'authentification mutuelle se fasse en amont du WAF ou indépendamment de lui. Ce n'est pas une correction de configuration — c'est une décision de périmètre à prendre avant le déploiement, pas pendant une panne.
Tirées directement du terrain — celles pour lesquelles il vaut la peine d'avoir une réponse prête.
Vérifiez le commutateur « Déchiffrement HTTPS/SSL » dans la configuration du site protégé. S'il est désactivé, le WAF ne termine pas du tout le TLS pour ce site, et aucune des vérifications de protocole, de chiffrement ou de certificat ci-dessous ne s'applique tant qu'il n'est pas activé.
Ouvrez directement le fichier de certificat, ou exécutez openssl x509 -noout -subject : un certificat dont la ligne de sujet porte le propre nom de domaine du site est la clé publique/feuille ; un certificat dont la ligne de sujet ne porte qu'un nom d'AC ou d'organisation, sans domaine du site, est le certificat d'AC/intermédiaire — il appartient à l'emplacement de la chaîne, pas à celui de la clé publique.
Confirmez d'abord que le chemin HTTP n'a réellement aucun autre problème, puis traitez cela comme un échec pur de négociation SSL/TLS. En pratique, cela se réduit presque toujours aux quatre mêmes causes : une version de protocole non prise en charge, une suite de chiffrement sans recoupement, une clé ou un certificat téléchargé qui ne correspond pas réellement au serveur, ou un client exigeant une authentification mutuelle (à deux facteurs) par certificat que le modèle proxy du WAF ne peut pas transmettre.
Un certificat de clé publique et sa chaîne doivent être en PEM/Base64, délimités par des blocs -----BEGIN CERTIFICATE----- / -----END CERTIFICATE-----, avec la chaîne ordonnée feuille puis intermédiaire. Une clé privée doit de même être un bloc PEM non chiffré (-----BEGIN PRIVATE KEY----- ou -----BEGIN RSA PRIVATE KEY-----). Un fichier resté en format DER/binaire, une clé protégée par phrase de passe, ou une chaîne dans le mauvais ordre échoueront chacun même lorsque le certificat sous-jacent lui-même est parfaitement valide.
Capturez le trafic séparément sur les interfaces côté client et côté serveur — l'outil de capture de paquets propre au WAF, ou tcpdump/Wireshark sur chaque segment — et lisez le message d'alerte. Un échec qui apparaît dans la capture côté client mais n'atteint jamais celle côté serveur est un échec de négociation client-vers-WAF ; un échec qui n'apparaît que dans la capture côté serveur est plutôt un problème de négociation WAF-vers-serveur.
Cette note s'articule autour du modèle de pannes de protection HTTPS de la série Huawei WAF5000 — configuration du site protégé, négociation SSL/TLS, chaîne de certificats — et des cas de terrain qui la sous-tendent. Si votre WAF est d'un autre fournisseur ou d'une autre version de firmware, les chemins exacts de la console et la politique de protocole/chiffrement par défaut varieront, mais la logique de négociation sous-jacente — configuration, recoupement protocole/chiffrement, correspondance certificat/clé, exclusion de l'authentification mutuelle — s'applique directement. Elle ne couvre pas en profondeur HTTP/3 (QUIC), l'épinglage de certificat, ni le support TLS 1.3 spécifique au firmware.
Dites-nous dans quelle catégorie la panne se situe — déchiffrement non activé, incompatibilité protocole/chiffrement, ou incompatibilité de certificat — ainsi que la capture du Client Hello, et nous vous aiderons à l'interpréter.