Hypothèses:
Serveur:
- J'ai un serveur Debian Squeeze, routable sur Internet public, avec une adresse IPv4 statique.
- J'ai un accès illimité pour modifier le logiciel sur le serveur.
- Le serveur peut écouter sur des ports arbitraires, reconfigurer les règles du pare-feu, fondamentalement, il n'y a aucune restriction sur ce que le serveur peut faire.
Client:
- Je peux exécuter Firefox, des programmes Java, des programmes .NET et certains exécutables natifs qui ne nécessitent pas d'accès administrateur sur mon système local (un bureau Windows verrouillé sans droits d'administrateur).
- Je peux installer des modules complémentaires dans Firefox.
- Je peux écouter sur n'importe quel port de l'
localhost
interface loopback ( ). Ainsi, les programmes susmentionnés peuvent se lier à un port local et effectuer des E / S réseau arbitraires, sans passer par un proxy. - Tout accès public à Internet est acheminé via un proxy HTTP restrictif qui bloque de nombreux sites et effectue une inspection minutieuse avec état. Sur le port 80, il autorise exclusivement HTTP (pas TLS / SSL). Sur le port 443, il autorise
CONNECT
SSL / TLS basé sur des hôtes distants qui ne sont pas bloqués par le nom de domaine / l'adresse IP. - Le proxy HTTP restrictif n'effectue pas d' inspection approfondie des paquets des connexions TLS autorisées via le proxy, et il n'effectue pas d' attaques Man in the Middle sur ces connexions.
- Le serveur susmentionné auquel j'ai accès n'est pas bloqué par le proxy.
Objectif:
Je souhaite acheminer toutes les demandes HTTP et HTTPS émises par Firefox, via le serveur ci-dessus, via SSL / TLS.
Autres notes sur le "But":
- Même si le site de point de terminaison (par exemple,
http://superuser.com
) n'utilise pas SSL / TLS sur mon serveur, je souhaite toujours utiliser SSL / TLS de mon client sur mon serveur et demander à mon serveur d'exécuter la requête HTTP - cryptée ou non - - à ma destination souhaitée. - Je me fiche que mon serveur regarde le trafic SSL "en clair". En d'autres termes, je n'ai pas besoin d'un cryptage SSL complet de bout en bout de mon client local, jusqu'au serveur distant, si le serveur distant est accessible par exemple
https://google.com
. En d'autres termes, je fais confiance au serveur pour garder mes données confidentielles. - Je suis prêt à installer des logiciels ou des extensions Firefox qui ne nécessitent pas de droits d'administrateur et peuvent fonctionner sur Windows 7 32 bits.
- Les logiciels libres sont préférés aux logiciels propriétaires et les logiciels gratuits aux logiciels nécessitant des frais de licence.
- Les logiciels existants sont préférables à devoir coder de nouveaux logiciels, bien que je sois prêt à écrire du code si c'est la seule façon.
Je suis à la recherche d'une "solution" vaguement décrite qui décrit:
- Quel logiciel serait requis sur le client? S'il existe un progiciel spécifique que vous connaissez, nommez-le; sinon, décrivez ce que le logiciel client devrait faire .
- Quel logiciel serait requis sur le serveur? S'il existe un progiciel spécifique que vous connaissez, nommez-le; sinon, décrivez ce que le logiciel serveur devrait faire .
- Si vous avez nommé des progiciels spécifiques ci-dessus, décrivez les paramètres de configuration qui seraient nécessaires pour le configurer afin d'atteindre mon objectif.
- Si, pour une raison quelconque, vous croyez que ce n'est pas possible , expliquez pourquoi .
Choses que j'ai essayées et qui ne fonctionnent pas
- En installant
squid
sur mon serveur, j'ai essayé de configurer mon propre proxy HTTP standard sur mon serveur. Cela n'a pas fonctionné, car lorsque je demande des sites Web dans Firefox via HTTP standard, Firefox essaie également d'accéder à mon serveur via HTTP standard! Ce n'est pas acceptable, car le proxy sur mon réseau local peut bien sûr observer et / ou bloquer le trafic HTTP régulier entre mon client et le serveur. - Les VPN ne fonctionnent pas , pas même OpenVPN sur TLS à l'écoute sur le port 443, car je n'ai pas les autorisations sur l'ordinateur local pour installer une
tun
carte réseau qui peut effectuer un routage de couche 3, ni faire aucune sorte de routage de couche 2 (par exempletap
). En bref: j'aurais besoin de droits d'administrateur pour installer OpenVPN, et même si j'avais ces droits d'administrateur temporairement, la société ne serait pas très satisfaite s'ils la trouvaient installée. Un programme Java ou .NET est beaucoup moins visible, en particulier lorsqu'il n'est pas installé dans Ajout / Suppression de programmes et n'a pas de composant de pilote de noyau comme OpenVPN.
socat
privilèges administratifs sur la boîte client Windows.