web-dev-qa-db-ja.com

httpsのsocatポート転送

次のように、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
8

通常、httpsサーバーはポート443で実行されるので、おそらくそれが問題ですか?

SSL証明書の警告は表示されますが、httpsでsocatからgoogle.comにアクセスしようとしても機能します。

socat TCP-LISTEN:8080,fork,reuseaddr TCP:google.com:443

forkreuseaddrを使用して、複数の接続と高速なip:portの再利用を許可しますが、 警告に注意 )。

これで、ブラウザーからgoogleでhttpsにアクセスできます。 https:// localhost:808 にアクセスしてください。

12
Thor

表示されているブラウザのセキュリティ警告は、URLとサーバー証明書のホスト名が一致していないためです(例:localhostexample.com)。

この警告なしで転送を機能させるには、同じTCPポートにフォワーダーを配置し、影響を受けるドメインのDNS解決をオーバーライドする必要があります(つまり、example.com resolve to 127.0.0.1)。

最も簡単な方法は次のとおりです。

  1. hostsファイル を編集し、example.comドメインをlocalhost行に追加します(howtoの種類は here )。

  2. 転送を開始します(ドメイン名は既にローカルホストにリダイレクトされているため、ドメイン名ではなくサーバーのIPアドレスを使用する必要があることに注意してください)

    socat TCP-LISTEN:443,fork,reuseaddr TCP:123.456.789.12:443

  3. https://example.comを介してブラウザで機能していることを確認します

実験が終わったら、hostsファイルからドメインエントリを削除することを忘れないでください。


同じTCPポート番号を確認できない場合、このアプローチも機能する可能性があります-ただし、いくつかの条件下でのみ:

  • サイトがリンクで相対パスを使用している(絶対パスでは元の(したがって異なる)ポート番号が使用されるため)

  • サーバー証明書にポート番号が書き込まれていない(通常はそうではない)


注:MITM socatプロキシーをセットアップすることは可能ですが、これには人工の信頼できるCAを追加する必要があります。

幸運を!

5
vlp

このようなものを試してください:

socat TCP-LISTEN:8080,fork,reuseaddr ssl:google.com:443
2
Khalfella

残念ながら、socatはそのようなタスクには使用できません。 socatではなく、実際のHTTPプロキシサーバーを使用する必要があります。

0