さまざまな外部Webサービスにアクセスするサーバーがたくさんあります。そのほとんどはSSLを使用しており、一部にはクライアント証明書が必要です。クライアント証明書の構成を一元化し、プレゼンテーションレイヤーを基盤となるサーバーから分離します。
Squidを使用してリクエストをプロキシすることはできますが、ターゲットWebサービスに固有のクライアント証明書を選択するようにSquidに指示する方法がドキュメントからわかりません。これは可能ですか?
1つのアプローチは、Squidプロキシを超えて一連のstunnelインスタンスを維持し、URLリライターでhttpリクエストを使用して、適切なstunnelインスタンスを介してリクエストをルーティングするようにクライアントソフトウェアを構成することですが、XML応答参照を取得すると壊れますHTTPS DTD(完全なMITMでコンテンツを書き換えない限り)。
別の解決策はありますか?
更新
「https」を「http」に書き換える際の問題は、プロトコルアダプタがこれらをhttpsに変換し直すため、追加のリソースがhttp URIで破壊されることです。
私は この記事 に出くわしました。これは、プロキシ接続にクライアント証明書を追加する問題に対処しました-これは潜在的に解決策です。ただし、クライアントがプロキシを使用するように構成されている必要があります。名前の付け方や、分割DNSで機能させる方法にも問題があります。確かに大きな問題ではありませんが、ここで説明しているのはほとんどのCDNプロバイダーで使用されているパターンだと思ったので、現在、中間コンポーネントとしてApache Traffic Serverを使用することを検討しています-これにより、分割DNS、クライアントとオリジン、およびオリジンサーバーとの通信用のクライアント証明書。
さらに掘り下げた後、私はポンドのインスタンスを連続して使用することにしました。 stunnelまたはhaproxyの使用も検討しましたが、poundはSSLを扱い、httpヘッダーを操作するための基本的な機能を備えています。
構成可能なCA証明書を使用した、ストレートCONNECTおよび透過的にリダイレクトされたSSLトラフィックのSquid-in-the-middle復号化および暗号化。