プロキシ経由でHTTPS接続を行うことができるHTTPからHTTPSへのローカルプロキシ

プロキシ経由でHTTPS接続を行うことができるHTTPからHTTPSへのローカルプロキシ

取引内容は次のとおりです。

  • 当社のクライアント ソフトウェアは http プロトコルを使用してのみ接続でき、https では接続できません。
  • ただし、セキュリティ要件ではエンドツーエンドのセキュリティが規定されているため、サーバーと通信するときには https を使用する必要があります。
  • 今、私はテスト環境でこれを実行することができました。スタンネル次の構成で:

stunnel.conf ファイル:

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
connect = the.real.server:443
  • 上記の stunnel 構成を使用すると、エンドポイント アドレスを使用するようにテスト クライアントを構成できhttp://localhost:3000/endpoint/url/、すべて正常に動作します。
  • しかし、実稼働環境では、クライアント側は the.real.server に直接ネットワーク アクセスできません。クライアント側からの HTTP/S トラフィックはプロキシ サーバーを経由する必要があります。
  • 私の質問:
    • プロキシ サーバーを使用して接続するように stunnel を構成することは可能ですか?
    • stunnel を使用できない場合、これを実現する別の方法はありますか?

答え1

サポートされているようですが、マニュアルページただし、この言語は、それを理解するにはプロトコルをある程度知っておく必要があるように書かれています。

プロトコル次のことがわかります。

connect RFC 2817 - HTTP/1.1 内での TLS へのアップグレード、セクション 5.2 - CONNECT によるトンネルの要求に基づきます。このプロトコルは、クライアント モードでのみサポートされます。

さらに下には次のような記述があります。

protocolHost = ADDRESS プロトコルネゴシエーションのホストアドレス 'connect' プロトコルネゴシエーションの場合、protocolHost はプロキシが接続する最終 TLS サーバーの HOST:PORT を指定します。stunnel によって直接接続されるプロキシサーバーは、connect オプションで指定する必要があります。

したがって、これをまとめると次のようになります。

[mylocalproxy]
client = yes
accept = 127.0.0.1:3000
protocol = connect
connect = proxy.example.org:3128
protocolHost = the.real.server:443

テストはしていませんが、ドキュメントの文言に基づくと、期待どおりに機能するはずです。

答え2

以下の方法で実行できます:

[SSL Proxy]
accept = 8443
connect = 8084
cert = certificate.pem
key = private_key.pem

https クライアント接続を許可するには、証明機関からの証明書が必要になります。

関連情報