次のように、socat
をポート転送に使用できます。
socat TCP4-LISTEN:8080 TCP4:123.456.789.12:80
この場合、それは完全に機能します:localhost:8080
へのすべてのhttp
-要求は123.456.789.12:80
にリダイレクトされます。
しかし、https
- requestsにそのような転送をどのように使用できますか?
PDATE: Firefoxとリモートサーバー間に単一のsocat
プロセスが必要です。 socat
は単なるフォワーダー(プロキシリダイレクター)であり、それ以上のものではありません。このようなもの:
Firefox -> socat -> server
------------>
https
通常、httpsサーバーはポート443で実行されるので、おそらくそれが問題ですか?
SSL証明書の警告は表示されますが、httpsでsocatからgoogle.comにアクセスしようとしても機能します。
socat TCP-LISTEN:8080,fork,reuseaddr TCP:google.com:443
(fork
とreuseaddr
を使用して、複数の接続と高速なip:portの再利用を許可しますが、 警告に注意 )。
これで、ブラウザーからgoogleでhttpsにアクセスできます。 https:// localhost:808 にアクセスしてください。
表示されているブラウザのセキュリティ警告は、URLとサーバー証明書のホスト名が一致していないためです(例:localhost
とexample.com
)。
この警告なしで転送を機能させるには、同じTCPポートにフォワーダーを配置し、影響を受けるドメインのDNS解決をオーバーライドする必要があります(つまり、example.com
resolve to 127.0.0.1
)。
最も簡単な方法は次のとおりです。
hostsファイル を編集し、example.com
ドメインをlocalhost行に追加します(howtoの種類は here )。
転送を開始します(ドメイン名は既にローカルホストにリダイレクトされているため、ドメイン名ではなくサーバーのIPアドレスを使用する必要があることに注意してください)
socat TCP-LISTEN:443,fork,reuseaddr TCP:123.456.789.12:443
https://example.com
を介してブラウザで機能していることを確認します
実験が終わったら、hostsファイルからドメインエントリを削除することを忘れないでください。
同じTCPポート番号を確認できない場合、このアプローチも機能する可能性があります-ただし、いくつかの条件下でのみ:
サイトがリンクで相対パスを使用している(絶対パスでは元の(したがって異なる)ポート番号が使用されるため)
サーバー証明書にポート番号が書き込まれていない(通常はそうではない)
注:MITM socatプロキシーをセットアップすることは可能ですが、これには人工の信頼できるCAを追加する必要があります。
幸運を!
このようなものを試してください:
socat TCP-LISTEN:8080,fork,reuseaddr ssl:google.com:443
残念ながら、socat
はそのようなタスクには使用できません。 socat
ではなく、実際のHTTPプロキシサーバーを使用する必要があります。