socat la redirection de port pour https
Je peux utiliser socat
pour la redirection de port comme ceci:
socat TCP4-LISTEN:8080 TCP4:123.456.789.12:80
Dans ce cas, il fonctionne parfaitement: tous les http
-demande à localhost:8080
serez redirigé vers 123.456.789.12:80
.
Mais comment puis-je utiliser un tel transfert pour https
-demandes?
Mise à JOUR: j'ai besoin d'un seul socat
entre Firefox et le serveur distant. socat
est juste un transitaire (proxy redirecteur), rien de plus. Quelque chose comme ceci:
Firefox -> socat -> server
------------>
https
- Avez-vous essayé cette recette?
- Je n'ai pas de deux
socat
, mais unsocat
et Firefox. Donc je ne comprends pas cette recette... - J'ai juste à rediriger
https
-les demandes à partir de Firefox (viasocat
) à un serveur distant.ssl
connexion doit être entre Firefox et le serveur,socat
est juste un redirecteur, rien de plus. Lorsque j'essaie cette commandesocat TCP-LISTEN:8081,fork,reuseaddr OPENSSL:123.456.789.123:80,verify=0
, j'ai une erreur "erreur:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:protocole inconnu". - J'ai mal lu votre question la première fois. Ma réponse à résoudre votre problème?
- Malheureusement, aucune. J'ai besoin unique
socat
processus, et non pas deux.Firefox
->socat
->server
.
Vous devez vous connecter pour publier un commentaire.
Normalement les serveurs https exécuter sur le port 443, peut-être que c'est votre question?
En essayant de parcourir socat à google.com avec https fonctionne, mais avec un certificat SSL avertissement:
(utiliser
fork
etreuseaddr
pour permettre les connexions multiples et rapides ip:port de réutilisation, mais beaware de la mise en garde).Vous pouvez maintenant accéder en https de google à partir d'un navigateur, il suffit d'aller à https://localhost:8080.
socat
comme si il n'y a passocat
.socat
est juste un transitaire (redirecteur), rien de plus.socat
, ce qui ne correspond pas au certificat. C'est une caractéristique de la conception du protocole SSL, pour éviter man-in-the-middle attaques.Le navigateur avertissement de sécurité vous obtenez est à cause de la différence de noms d'hôte dans l'url et dans le certificat de serveur (par exemple,
localhost
vsexample.com
).Pour faire de la redirection de travailler sans cet avertissement, vous devez mettre le transitaire sur le même port TCP et remplacer la résolution DNS pour l'effectuées de domaine (c'est à dire faire
example.com
résoudre à127.0.0.1
).L'approche la plus simple est la suivante:
modifier votre fichier hosts et ajouter
example.com
domaine de l'localhost ligne (sorte de guide est ici)début de votre transmission (attention, vous devez utiliser l'adresse IP du serveur et pas de nom de domaine le nom de domaine est déjà redirigé vers localhost)
socat TCP-LISTEN:443,fork,reuseaddr TCP:123.456.789.12:443
vérifier qu'il fonctionne dans le navigateur via
https://example.com
Ne pas oublier d'enlever le domaine de l'entrée dans le fichier hosts lorsque terminé.
Si vous ne pouvez pas assurer le même numéro de port TCP, cette approche pourrait fonctionner ainsi, mais seulement sous certaines conditions:
le site utilise des chemins relatifs dans les liens (comme un chemin d'accès absolu serait d'origine (donc différentes) numéro de port)
il n'y a aucun numéro de port n'écrit dans le certificat du serveur (qui n'est généralement pas le cas)
Remarque: Il est possible de configurer un MITM socat proxy, mais cela nécessiterait l'ajout d'un artificiel autorité de certification de confiance.
Bonne chance!
Malheureusement,
socat
ne peut pas être utilisé pour une telle tâche. Je dois utiliser le vrai serveur proxy HTTP à la place desocat
.Essayer quelque chose comme cela: