Accueil / Notes techniques / Dépannage de site HTTPS derrière un WAF

Pannes de site HTTPS sur un WAF : versions TLS, certificats et échecs de négociation

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

Trois catégories, pas un grand mystère

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.

À quel moment de la négociation la panne se produit-elle ?

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.

HTTPS Site Fault Fails During SSL Negotiation Negotiates OK, Site Still Broken Bucket 1 · Decryption not configuredHTTPS/SSL decryption off · key/chain not uploaded Bucket 2 · Protocol version rejectedclient offers SSLv2/SSLv3/TLS1.0, WAF only accepts TLS1.1/1.2 Bucket 2 · Cipher suite has no overlapclient offers only weak/legacy ciphers Bucket 3 · Certificate/key mismatchpublic key vs CA swapped · key doesn't match cert Mutual (client-cert) auth siteUkey / hardware token — WAF proxy can't pass it through HTTPS fails, HTTP works finesame 4 causes on the left, seen from the client side

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.

Parcourir chaque catégorie

Configuration, négociation de protocole et certificats laissent chacun une signature différente — voici où regarder pour chacun, et les commandes exactes.

Catégorie 1 — Confirmer que le déchiffrement HTTPS est bien configuré

Avant tout, confirmez que le site protégé est bien configuré pour terminer le TLS.

  1. Vérifiez la configuration du site protégé et confirmez que « Déchiffrement HTTPS/SSL » est activé. Si ce n'est pas le cas, le WAF ne termine pas du tout le TLS pour ce site, et aucune des vérifications ci-dessous ne s'applique tant que ce n'est pas activé.
  2. Confirmez que la clé publique, la clé privée et la chaîne de certificats ont bien toutes été téléchargées — pas seulement la clé publique seule.
  3. Ouvrez le fichier de certificat lui-même et vérifiez son sujet : si le propre nom de domaine du site apparaît, c'est la clé publique/feuille ; si le sujet ne porte qu'un nom d'AC ou d'organisation sans domaine du site, c'est en fait un certificat d'AC/intermédiaire téléchargé au mauvais endroit — cette confusion est assez fréquente pour mériter sa propre FAQ ci-dessous.
$ 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

Catégorie 2 — Confirmer que la version de protocole et la suite de chiffrement se recoupent réellement

Si la configuration est correcte, capturez le Client Hello et comparez-le à ce que le WAF acceptera.

  1. Capturez les paquets côté client et lisez le Client Hello — quelles versions TLS et quelles suites de chiffrement le client a-t-il réellement proposées.
  2. Comparez cela à l'ensemble pris en charge par le WAF. Par défaut, pour des raisons de sécurité, le WAF n'accepte que TLS 1.1 et TLS 1.2 — SSLv2, SSLv3 et TLS 1.0 sont rejetés d'emblée, et un client ancien (ou une ancienne intégration, un scanner, une sonde de vérification de santé) qui ne parle que ces versions échoue la négociation avant même que les certificats soient échangés.
  3. Si la liste des suites de chiffrement du client est entièrement composée de chiffrements faibles ou obsolètes que le WAF n'accepte pas, la seule façon de débloquer le site est d'assouplir la liste des suites acceptées par le WAF dans sa console — en sachant que cela sacrifie précisément la marge de sécurité que l'activation du HTTPS était censée apporter.
$ 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

Catégorie 3 — Confirmer que la chaîne de certificats correspond réellement

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.

  1. Confirmez que la clé privée téléchargée est bien celle générée avec ce certificat précis — pas un reliquat d'un renouvellement précédent, ni une clé pour un domaine totalement différent.
  2. Confirmez que la chaîne inclut tous les certificats intermédiaires que le client ne fait pas déjà confiance nativement, dans le bon ordre — pas seulement le certificat feuille seul.
  3. Si le client présente son propre certificat client (un Ukey ou une authentification mutuelle par jeton matériel similaire), arrêtez-vous ici : le WAF termine et rétablit le TLS en tant que proxy, et un site qui exige que le serveur vérifie directement le certificat propre du client ne peut absolument pas être protégé par le WAF dans cette configuration.
$ 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

5 pièges qui reviennent sans cesse

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.

1. Version de protocole TLS rejetée d'emblée

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.

2. Aucune suite de chiffrement en commun avec la liste acceptée par le 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.

3. Clé publique et certificat d'AC téléchargés au mauvais endroit

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.

4. La clé privée ne correspond pas réellement à ce certificat

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.

5. Les sites à authentification mutuelle (certificat client) ne peuvent pas être proxifiés

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.

Conceptions de solutions associées

Cinq questions qui reviennent constamment

Tirées directement du terrain — celles pour lesquelles il vaut la peine d'avoir une réponse prête.

Comment vérifier si un site a réellement le déchiffrement HTTPS activé ?

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é.

Comment savoir si un certificat téléchargé est réellement une clé publique ou un certificat d'AC ?

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.

Un site fonctionne bien en HTTP mais échoue dès que je le bascule en HTTPS — pourquoi ?

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.

Comment confirmer que la clé publique, la clé privée et la chaîne de certificats sont réellement au bon format ?

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.

Quand l'accès HTTPS échoue, comment savoir de quel côté de la négociation la panne se situe réellement ?

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.

Limites honnêtes de cette note

Limites honnêtes de cette note

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.

Bloqué sur un site HTTPS précis ?

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.

Contacter un ingénieur sur WhatsApp →

Lectures connexes

Nous n'utilisons des cookies que pour des statistiques anonymes — pas de publicité, pas de suivi intersites.Politique de confidentialité