web-dev-qa-db-ja.com

同じIPでSSLをサポートするいくつかのサイトをセットアップするための最良のオプションは何ですか?

複数のホスト名が同じIPでホストされている場合、httpsをサポートできるようにするのは簡単ではありません。ブラウザのサポートやWebサーバーのサポートに関して最適なオプションは何ですか?

22
Erlend

私が見てきたことから "Server Name Indication" は、現時点でこれを達成するための主な方法です。

欠点の1つは、古いブラウザーはこれをサポートしないため、サイトによっては使用できない可能性があることです。

編集:@ D.W。と@Piskvorのコメントに従って更新するだけで、リンクされているWikipediaページにサポートされているブラウザとサポートされていないブラウザのリストがあるようです。

Windows Vista以降のInternet Explorerのすべてのバージョンを含む、すべての一般的なブラウザーがSNIをサポートしています。 Windows上のInternet Explorer 6、7、および8 XPは、SNIをサポートしていない主要なブラウザーでしたが、2014年4月以降、セキュリティアップデートを受信して​​いません。

18
Rory McCune

2つの方法があります。すべてのサイトが同じ証明書を使用する(この場合、クライアントが接続しようとしたサイトに関係なく、クライアントブラウザーが証明書を受け入れるようにする方法が必要です)、またはサイトに応じて正しい証明書を選択するクライアントが接続したいもの(その場合、何らかの方法でその情報を取得する必要があります)。

最初の方法として、ブラウザがサーバー証明書から実際に期待するものを指定する RFC 2818 を検討します。ブラウザは、サーバー名の部分(https://の後、次の/の前)を含むURLに接続しようとしています。ブラウザは、サーバー証明書でその名前を見つけたいと考えています。詳細はセクション3.1にあります。基本的に、証明書のSubject Alt Name拡張機能は、タイプdNSNameの名前をスキャンし、そのうちの1つがURLのサーバー名と一致する必要があります。サブジェクト代替名拡張にdNSNameがまったく含まれていない場合、またはサーバー証明書にサブジェクト代替名拡張がない場合、subjectDNの共通名が使用されます。ワイルドカード文字「*」は、「任意の」名前の部分との一致に使用できますが、これはすべてのブラウザーで確実にサポートされているわけではありません。

したがって、同じIPとポートで複数のサイトをサポートするには、サブジェクト代替名拡張にすべてのサイト名をリストする証明書を使用します。これにはいくつかの欠点があります。 itrevealsすべてのサイト名(接続して証明書を確認するだけです);また、新しいサイトを追加するたびに新しい証明書を取得する必要があります。最後に、証明書プロバイダーによって、処理が少し難しくなったり、高額になったりする場合があります(例: StartSSL からの無料の証明書は単一ドメインのみです。複数のドメインで証明書を取得するには、支払う必要があります)。

2番目の方法には、SSLの拡張機能である Server Name Indication が含まれます。この拡張機能を使用すると、クライアントはハンドシェイクの早い段階で目的のサーバー名をアナウンスするため、サーバーは、クライアントが通信するサイトに応じて、使用する証明書を選択できます。残念ながら、SNIのサポートはWindows XPのInternet Explorerでは利用できません。これは、まだ一般的な組み合わせです( StatCounter global stats によると、2012年10月現在、12%以上のWebユーザーが使用しています) IE 8.0、おそらくWinXP上のそれらの多く-WinXPのシェアはOSの27%であるため、WinXPユーザーの半分以上が非XPに切り替えたと結論付けることができますIEブラウザ)。潜在的なサイトのオーディエンスの12%を捨てることは、重要なポリシー決定です。

また、SNIでは、serverソフトウェアがSNIをサポートし、それを使用するように構成されている必要があります。 Apacheとmod_sslでそれを行う方法については このページ を参照してください。

5
Thomas Pornin

別のオプションは、ホスト名で許可されている場合、ワイルドカードSSL証明書を使用することです。
そのため、www = yourdomain.com、mail.yourdomain.com、ftp.yourdomain.comなどをカバーするCN = *。yourdomain.comの証明書が作成されます。

私の知る限り、ほとんどのWebサーバーでは、異なるホスト名を使用する必要があり、それらが同じIP上になければならない場合(仮想IPの方が良いが、そのままにしておくことができます)、異なるポートを使用する必要があります。
例えば。 443、444、445など.

ただし、ユーザーにとって必ずしも直感的であるとは限りません...

2
AviD

Subject Alternative Namesよりも柔軟性があるため、Server Name Indicationを検討することをお勧めします(古いブラウザーでも動作する可能性があります!)。 SANでは、単一の証明書を使用することを許可しています 最大25のDNS名 以上、購入者によって異なりますSAN。各ドメインに異なるTLD(トップレベルドメイン).com、.orgなど.

ワイルドカード証明書も機能する可能性がありますが、上位2つの要素(* .example.com)が共通である必要があります。ただし、これらのクラスの証明書では、ベンダーの電子商取引保険のほとんどを失う可能性があります。このタイプのEV証明書を取得することは不可能だと思います。

2