Malheureusement, "proxy HTTPS" a deux significations distinctes :
- Un proxy qui peut transférer le trafic HTTPS vers la destination. Ce proxy lui-même utilise un protocole HTTP pour mettre en place la redirection.
Dans le cas où le navigateur tente de se connecter à un site Web en utilisant HTTPS, le navigateur enverra une demande CONNECT au proxy, et le proxy établira une connexion TCP avec le site Web et reflétera tout le trafic TCP envoyé sur la connexion du navigateur vers le proxy sur la connexion entre le proxy et le site Web, et reflétera de manière similaire la charge utile des paquets TCP de réponse du site Web vers la connexion avec le navigateur. En théorie, le même mécanisme utilisant CONNECT pourrait être utilisé avec le trafic HTTP, mais en pratique, les navigateurs ne le font pas. Pour le trafic HTTP, ils envoient la demande HTTP réelle au proxy, y compris le chemin complet dans la commande HTTP (ainsi que la définition de l'en-tête Host
) : https://stackoverflow.com/a/38259076/10026
Ainsi, selon cette définition, un proxy HTTPS est un proxy qui comprend la directive CONNECT et peut prendre en charge le trafic HTTPS allant entre le navigateur et le site Web.
- Un proxy qui utilise le protocole HTTPS pour sécuriser la communication client.
Dans ce mode (parfois appelé "proxy sécurisé"), le navigateur utilise le certificat du proxy pour effectuer un handshake TLS avec le proxy, puis envoie du trafic HTTP ou HTTPS, (y compris des demandes CONNECT), sur cette connexion conformément à (1). Ainsi, la connexion entre le navigateur et le proxy est toujours protégée par une clé TLS dérivée en utilisant le certificat du proxy, indépendamment de savoir si le trafic lui-même est chiffré avec une clé négociée entre le navigateur et le site Web. Si le trafic HTTPS est relayé via un proxy sécurisé, il est doublement chiffré sur la connexion entre le navigateur et le proxy.
Par exemple, le plugin Chrome Proxy Switcher propose deux paramètres séparés pour contrôler chacune de ces fonctionnalités :
En 2022, l'option d'utilisation d'un proxy sécurisé n'est pas disponible dans l'interface de configuration manuelle du proxy pour MacOS et Windows. Mais un proxy sécurisé peut être spécifié dans un fichier PAC utilisé dans la configuration automatique du proxy en utilisant la directive proxy HTTPS. Il revient à l'application consommatrice de prendre en charge la directive HTTPS ; la plupart des navigateurs majeurs, à l'exception de Safari, et de nombreuses applications de bureau la prennent en charge.
REMARQUE : Les choses deviennent un peu plus compliquées car certains proxies qui relayent le trafic HTTPS ne transfèrent pas simplement la charge utile des paquets TCP, comme décrit en (1), mais agissent comme des Proxies Intercepteurs. En utilisant un certificat de site Web falsifié, ils effectuent effectivement une attaque de l'homme du milieu (eh bien, ce n'est pas nécessairement une attaque car c'est un comportement attendu). Alors que le navigateur pense utiliser le certificat du site Web pour établir un tunnel TLS avec le site Web, il utilise en réalité un certificat falsifié pour établir un tunnel TLS avec le proxy, et le proxy établit le tunnel TLS avec le site Web. Ensuite, le proxy a une visibilité sur les demandes/réponses HTTPS. Mais tout cela est complètement orthogonal à la question de savoir si le proxy agit en tant que proxy sécurisé selon (2).