Bonjour @Valwex ,
Pour commencer, il faudrait éclaircir ce que tu cherche à faire, et peut-être ce qu'est un proxy.
Un proxy va écouter sur un port (rôle serveur) et se connecter à un serveur (rôle client).
Lorsqu'un client se connecte et envoi des paquets au proxy, le proxy les transmet au serveur, et vice-versa...
Ça, c'est le fonctionnement d'un proxy. Au final, que tu fasse du HTTP/HTTPS/TELNET/SSH/SMTP ou n'importe quel protocole réseau, le proxy fonctionnera pareil: il ne fait que transmettre les paquets.
Par définition, TLS (ou SSL, qui tend à disparaître car vulnérable) sert à deux choses:
- Chiffrer les paquets
- Garantir l'authenticité du serveur
Le chiffrement est assuré par divers casses-têtes cryptographiques pour aboutir à quelque-chose qu'on assimile souvent à un "tunnel": A moins d'être à une des deux extrémités du tunnel, il est "impossible" (rien n'est impossible en cryptographie) de connaitre les informations qui circulent dans ce tunnel.
L'implémentation d'un "un proxy d'un site utilisant le protocole HTTPS" peut être de deux types:
- Invisible (et aveugle): Le proxy fait transiter les paquets TCP entre client et serveur. Le contenu des paquets TCP étant chiffré par un "tunnel" TLS entre le client et le serveur, le proxy est incapable de savoir ce qu'il y a à l’intérieur. C'est donc un simple proxy TCP (dont tu trouvera des exemples sur ce forum).
- Man in the middle: Le proxy devient lui-même un point de terminaison TLS (une sortie du tunnel), fait la jonction entre deux tunnels chiffrés (client <-> proxy et proxy <--> serveur) et peut donc intercepter les données. Dans ce cas, il faut que le proxy puisse présenter au client un certificat x509 généré par une autorité de certification "maison", mais surtout que le client reconnaisse cette autorité de certification!
En effet, l'authenticité du serveur est assurée par un certificat x509 signé par une autorité de certification reconnue par ton navigateur et/ou système d'exploitation (exemple: Firefox a son propre magasin de certificats, Chrome se réfère à celui du système d'exploitation, Windows par exemple. Parmi les plus connues, on peut citer Symantec, Verisign, Global Sign).
Un serveur ne peut présenter ce certificat à un client que s'il possède la clé privée de ce certificat. Seul le propriétaire du certificat possède cette clé, et il a tout intérêt à la sécuriser...
Vu que le proxy TCP est déjà pas mal présenté sur ce forum, j'imagine que tu cherche à réaliser un proxy MITM. Dans ce cas je te recommande d'étudier le fonctionnement de HTTPS, en particulier les "infrastructures à clé publique" (ou PKI: Public Key Infrastructure).
Cependant, garde à l'esprit que HTTPS sert à garantir à un visiteur qu'il s'adresse bien au serveur auquel il croit s'adresser, donc pour faire du déchiffrement avec l'aide d'un proxy, il faudra que le client sache qu'il s'adresse au proxy, ou alors il faudra posséder la clé privée du serveur.
PS: La "clé privée" est un "mot de passe" de - la plupart du temps - 2048 bits, soit un nombre à 637 chiffres en décimal!