web-dev-qa-db-ja.com

Squidを「TLS終了プロキシ」として使用して、クライアント証明書を使用してTCP接続を暗号化できますか?

概要

暗号化されたTCP複数のクライアントからインターネット経由で単一ポートへの接続が必要です。これはSquidで実現できますか?

具体的な状況

私たちは、LANとVPNを介してアクセスできる社内の監視およびクライアント管理ソリューションを使用しています。これで、会社のVPNを使用しない外部ノートブックからアクセスできるようになります。通信は暗号化する必要があります(TLS)。クライアント認証では、クライアント証明書を使用する必要があります。通信はクライアントによって開始され、単一のTCPポートを使用します。

私の調査結果

NGINX Plus はこの機能を提供しているようですが、管理者はSquidまたはApacheを好みます。 squid wikiで次のことがわかりました: Feature:HTTPS(HTTP SecureまたはHTTP over SSL/TLS) ここでTCP暗号化について言及しています。しかし、私はこの警告も見つかりました:

CONNECTを介して渡されるプロトコルは、Squidが通常処理するものに限定されないことに注意することが重要です。文字通り、双方向TCP接続を使用するものはすべて、CONNECTトンネルを介して渡すことができます。これが、SquidのデフォルトACLが拒否CONNECT!SSL_Portsで始まる理由であり、非常に正当な理由があるはずです。それらの上に任意のタイプの許可ルールを配置します。

同様の質問

この質問 Encrypt client connection with squid forward proxy using SSL は似ていますが、リバースプロキシ/ TLS終了プロキシは扱いません。

知っておくべきこと

私はそのテクノロジーについての基本的な知識しか持っておらず、私たちの管理者が一般的な実現可能性を尋ねました。

  • Squidを使用してTCP接続の暗号化を保存できますか?
  • これは、クライアント証明書による認証を使用して実現できますか?
  • それともHTTPS接続にのみ使用する必要がありますか?
8
marsh-wiggle

多分あなたの管理者は嫌いですNGINX Plusなぜならそれはオープンソースではなく、よく整備された別のオープンソース製品を受け入れるからです。次に、 stunnel を確認するように依頼します。まさにあなたのニーズに合わせて設計されています。

wikipedia でstunnelの例を引用します(SMTPの場合、これはあなたのニーズにぴったり合うでしょう):

たとえば、stunnelを使用して、既存の非SSL対応のSMTPメールサーバーへの安全なSSL接続を提供できます。 SMTPサーバーがポート25でTCP=接続を想定しているとします。SSLポート465を非SSLポート25にマップするようにstunnelを構成します。メールクライアントはSSL経由でポート465に接続します。クライアントは最初にSSLを介してstunnelアプリケーションに渡し、トラフィックは透過的に暗号化/復号化され、セキュリティで保護されていないトラフィックがローカルでポート25に転送されます。メールサーバーは非SSLメールクライアントを認識します。

Stunnelプロセスは、保護されていないメールアプリケーションと同じサーバーまたは異なるサーバーで実行されている可能性があります。ただし、両方のマシンは通常、セキュリティで保護された内部ネットワークのファイアウォールの背後にあります(そのため、侵入者は、ポート25に直接、セキュリティで保護されていない接続を直接行うことができません)。

7
Layer8

CONNECTは、HTTPクライアントからHTTPプロキシへのトンネルを確立するためにのみ使用されます。 HTTPプロキシへの暗号化された接続のためのHTTPのスキームもありません。

HTTPプロキシはここで探しているものではないようです。

SquidがTCPプラグをTLSおよびクライアント証明書でサポートするかどうかはわかりませんが、- WinGate はサポートします。また、アクティブな証明書へのUserPrincipalNameを検証する機能もあります。ディレクトリ。

免責事項:私はWinGateの作者であるQbikで働いています。

2
Adrien