Un proxy HTTP peut lire et router les requêtes HTTP en clair. Mais le trafic HTTPS chiffré ? Comment le router puisque le proxy ne peut pas en lire le contenu ? La réponse est la méthode CONNECT : la façon standard de dire au proxy « ouvre un tunnel TCP brut vers cette adresse, puis n'interviens plus ».
Comment le tunnel est-il établi ?
Après la réponse 200, le proxy devient un simple « tuyau » : il transfère les octets reçus tels quels à l'autre extrémité, sans jamais regarder le contenu.
La réponse CONNECT 200 Connection established dès cet instant, le proxy cesse de parler HTTP. Les octets suivants constituent la négociation TLS, que le proxy ne peut pas interpréter — il se contente de la transporter.
Que voit le proxy dans un tunnel CONNECT ?
Autrement dit, HTTPS masque ce que vous faites mais ne masque pas où vous allez . Cette distinction est capitale lorsqu'on évalue la confidentialité d'un proxy.
Nous avons traité en détail la question des fuites de métadonnées et des logs notre article sur les journaux de logs .
Différence entre CONNECT et absolute-URI
En HTTP en clair, une forme de requête différente est envoyée au proxy. Il ne faut pas confondre les deux :
| HTTP en clair (absolute-URI) | HTTPS (CONNECT) | |
|---|---|---|
| Ligne de requête | GET http://site/yol HTTP/1.1 | CONNECT site:443 HTTP/1.1 |
| Le proxy voit-il le contenu | Oui, intégralement | Non |
| Peut-il ajouter des en-têtes | Oui | Non |
| Peut-il mettre en cache | Oui | Non |
| Pour chaque requête | Nouvelle ligne de requête | Un seul tunnel, plusieurs requêtes |
C'est pourquoi les en-têtes comme X-Forwarded-For ne peuvent être ajoutés que dans le trafic HTTP en clair ; en HTTPS, le proxy ne peut pas toucher aux en-têtes.
Pourquoi CONNECT est-il restreint ?
CONNECT donne au proxy le pouvoir d'« ouvrir une connexion TCP brute vers n'importe quelle adresse ». Sans restriction, le proxy devient un relais ouvert. C'est pourquoi la plupart des configurations de proxy limitent CONNECT à certains ports uniquement :
Le blocage des ports SMTP vise à prévenir les abus liés au spam. Si vous devez transporter du trafic e-mail, vous devez demander une autorisation spécifique à votre fournisseur.
Erreurs fréquentes
L'erreur que vous voyez dans le navigateur ERR_TUNNEL_CONNECTION_FAILEDsignifie que la requête CONNECT a reçu une réponse autre que 200. Pour en voir le détail, testez avec curl.
Analyse en ligne de commande
Cette dernière commande montre à quel point le protocole est simple : il suffit d'envoyer quelques lignes de texte et de recevoir une réponse 200.
Interception TLS (SSL Inspection)
Certains proxys d'entreprise, au lieu d'établir le tunnel, s'interposent : ils se connectent eux-mêmes à la cible et présentent au client un faux certificat signé par l'autorité racine de l'entreprise. Dans ce cas, le proxy peut aussi lire le contenu chiffré.
Dans le navigateur, cliquez sur l'icône du cadenas et regardez l'organisme émetteur du certificat. Si le nom de l'entreprise apparaît à la place de l'autorité de certification publique attendue, c'est qu'une interception TLS est en place. Nous abordons le sujet dans notre article sur le proxy transparent .
Note de performance : réutilisation du tunnel
Une fois un tunnel CONNECT établi, plusieurs requêtes vers la même cible peuvent y transiter. Cela revient à ne payer qu'une seule fois le coût de la négociation. Garder le keep-alive activé sur votre client apporte un gain de vitesse net sur le trafic reposant sur CONNECT.
La première requête est coûteuse, les suivantes bon marché. Un client qui ouvre une nouvelle connexion à chaque requête paie cet écart en permanence.
Résumé
CONNECT est un mécanisme simple mais puissant qui permet à un proxy HTTP de transporter du trafic chiffré. Une fois le tunnel établi, le proxy ne voit pas le contenu ; il connaît seulement le nom de domaine cible, l'heure et le volume d'octets. Les politiques de ports limitent CONNECT afin de prévenir les abus. Pour la performance, la réutilisation du tunnel est déterminante. Pour valider votre configuration, utilisez notre outil de vérification de proxy est à votre disposition.