現在、静的yコンテンツと動的コンテンツの両方を提供するために次のスキームを使用しています。
X-Forwarded-Forサポートパッチを使用してstunnelをコンパイルしました。
インターネット(http)-> haproxy(frontend1)-> Apache Farm
インターネット(https)-> stunnel-> haproxy(frontend2)-> Apache Farm
Stunnelは、xxxx.comからの証明書を使用するように構成されています。 stunnelのサポートを追加して他の証明書で提供することは可能ですか?
cert = /etc/stunnel/group.cert
key = /etc/stunnel/private.key
verify = 0
debug = local0.debug
CAfile = /etc/stunnel/group.cert
chroot = /var/run/stunnel4/chroot
setuid = stunnel4
setgid = stunnel4
failover = prio
xforwardedfor = yes
TIMEOUTclose=0
socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1
[https]
accept = 443
connect = HAPROXYHOST:FRONTEND2PORT
別のIPアドレスにバインドする別のstunnelインスタンスを実行できることはわかっていますが、さらに多くのサイトをホストすることにした場合、無限のパブリックアドレスはありません。仮想ホストごとに異なる証明書を提供するように、Apacheを構成できることはわかっています。このスキームでこれを行いますか?または、stunnelからApachemod_proxyまたは別のソリューションに変更することもできます。
どうもありがとう。
同じアドレスの同じポートで異なる証明書を提供することは、TLS Server Name Indicationのサポートに依存しますが、これはstunnelではサポートされていません。
Apacheをプロキシとして使用すると、実際に必要なサーバー側のサポートが得られますが、サーバー名表示のクライアント側のサポート(つまり、Windows XP)はまだ普及していないことに注意してください。
それがあなたの価格帯にある場合、考慮すべき代替案は、サブジェクト代替名を提示する証明書です。
一般に、SSL/TLSと1つのIPで複数のサイトを操作する場合、2つのオプションがあります。
1つ目は、クライアントに、最初のリクエストで関心のあるホストの名前を送信させることです。これは http://en.wikipedia.org/wiki/Server_Name_Indication が提供するものですが、すべてのクライアントでサポートされているわけではありません(機能するものと機能しないもののリストについては、ウィキペディアのページを参照してください)それのための)。 SNIを使用すると、安全なネゴシエーションの開始時にホスト名を使用できるため、サーバーは応答する適切な証明書を選択できます。
SNIを使用できない場合は、わずかな問題があります。クライアントが現れて「SSLを実行したい」と言いますが、どのホスト名が必要かわからないため、適切な証明書を選択できません。あなたが知っているのはIPアドレスだけです。したがって、これを行うには、返す証明書がそのIP上のすべての異なるvhostに対して有効であることを確認する必要があります。
この後者は、最初に聞こえるほど悪いとは限りません。 1つのオプションは、ワイルドカード証明書(* .mysite.comなど)を取得することです。 www.mysite.comとimages.mysite.com(つまり、両方が同じワイルドカードスペース内)を提供している限り、問題はありません。もう1つのオプションは、証明書でsubjectAltNameを使用することです。このオプションを使用すると、1つの証明書が複数のWebサイトで有効になります。そうすれば、1つの共通証明書をクライアントに返送するときに、必要なホストのいずれに対しても有効になります。非常に多くのCAがこの後者のオプションをサポートしており、これは通常、EVA証明書の唯一のオプションです(通常、ワイルドカード証明書を取得することはできません)。通常、新しい証明書を追加するたびにCAを呼び出します。そのIPにvhostすると、少額の料金が請求され、追加の名前が含まれる新しい証明書が発行されます。