同じIP上でSSLを使用する複数のドメイン


回答:


28

仮想ホストとSSL / TLSで問題が実際に何であるかを説明する方法は良い考えだと思います。

HTTP経由でApacheサーバーに接続すると、一連のhttpヘッダーが一緒に送信されます。次のようになります。

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

仮想ホスティングを使用している場合、Apacheはhostsフィールドを確認してから、適切なindex.htmlを取得します。問題は、SSL / TLSを追加するときです。サーバーは、httpリクエストを送信する前に暗号化を設定します。そのため、サーバーは、認証/暗号化が完了するまで、www.nice-puppies.comとwww.evil-haxxor.comのどちらにアクセスするかを知りません。サーバーは推測できません(間違った証明書を送信すると、厄介なエラーメッセージが表示されるため)。

1つの解決策は、ワイルドカード証明書(上記)です。これは、*。nice-puppies.comで有効です。そのようにすると、複数のドメインに同じ証明書を使用できますが、*。com証明書を取得することはできません(できますが、他のすべてのユーザーにとっては非常に悪いでしょう)。 HTTPSドメイン。


4
良い説明ですが、1つの証明書で複数のドメインを許可するUC証明書がある可能性があります
サムコーガン

1
はい、ユニファイドコミュニケーション証明書(UCC / UC証明書)を取得できます。私はおそらくそれらに言及すべきでした。私が見た限り、それらは主にExchange / Office Communication Serverで使用されています。また、異なるサイトに同じ証明書を使用すると、x509セマンティクスを悪用します。ただし、ほとんどのTLSスタックで機能します。
ペール

6
また、SNI。あなたの声明はもはや決定的なものではありません。あなたの説明は歴史的に正確ですが、現在の技術を反映していません。
ワーナー

4
SNIは(まだ?)Windows XP上のIE6で動作しません。市場シェアを考慮して、どのような種類の価値を制限します。元のユーザーは、それを回避するために存在する一連のハッキングよりも、何が起こるかに興味を持っていたと思います。
ペール

SHTTPからHTTPSへの最後のスペルミスを修正しようとしましたが、これは編集が小さすぎるため拒否されました。
スチュアート

8

この問題の実際の解決策は「サーバー名表示」です。

http://en.wikipedia.org/wiki/Server_Name_Indication

サーバーやWebクライアントに展開され始めたばかりなので、今では実際に使用できるものではありませんが、数年後にはそれほど大きな問題にはならないことを願っています。


2

問題は、SSL証明書がホスト名ではなくIPアドレスにバインドされていることです。HTTPS要求のIPアドレスで接続が開始されると、最初のアクションは、サーバー証明書またはクライアント証明書、あるいはその両方を渡すことによってSSL通信を確立することです。接続ハンドシェイクのこの段階では、Apacheサーバーは、通過する要求の目的を知る方法がありません。これはHTTP(非SSL)トラフィックでは異なります。接続が確立された後、Apacheサーバーは、クライアントがHostヘッダーを送信するか、設定された最初の仮想ホストに渡す場合に使用する仮想ホスト構成を決定できるためです。

同じドメインに複数の仮想ホストがある場合、IPアドレスに単一のワイルドカード証明書を設定し、異なるサーバー名が定義された複数の仮想ホストを設定できます。ただし、それらのサーバー名が同じドメイン名の下にない場合、クライアントサーバーエラーが生成されます。これは、ワイルドカード証明書がそのドメイン名の下のすべてのホスト名に対して有効になるため、機能します。ドメイン名が異なる場合、別のIPアドレスが必要になります。そのIPアドレスに対して定義された最初の証明書が、クライアントの接続用に提示される証明書になるためです。


1

これは、単一のSSL証明書にSAN(サブジェクトの別名)として追加できます。私の経験では、組織のsll証明書を要求する必要がありました。私はglobalsignを使用しました。


1

実際、最新のソフトウェアでは、「SNI-Server Name Indication」と呼ばれる新機能を使用して、単一のIPアドレスで複数のHTTPSサイトを提供できます。

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

私自身はまだこれを使用していませんが、内部サイトやイントラネットサイトには適しています。最新のブラウザのほとんどはSNIをサポートしています。IE6はSNIをサポートしていませんが、IE7はサポートしています。

(訂正:20100426-SNIはWindows XPではまったくサポートされていません。WindowsVista以降はSNIをサポートしています。http://msdn.microsoft.com/en-us/library/dd208005%の「セクション2.2.3」を参照してください。 28v = PROT.13%29.aspx#id8)。


2
IEでは、サポートはIEバージョンからではなく、基盤となるOSバージョンから行われます。Vista以降はSNIをサポートしています。XPはサポートしていないため、XPでIE8を使用しても、SNIを取得できません。
ナスコ

1

私は同じ問題に取り組んでいます。私のテストとして、IE7以降(Win7およびVistaのみ)/ Chrome / Firefox / Safari / Operaは「サーバー名表示」をサポートしています。実際、ブラウザーがTsl 1.0を使用している場合、「サーバー名表示」をサポートします。


0

OPは、多くの仮想ホストを持つIPにSSL証明書を追加するとどうなるかを尋ねていると思います。他の仮想ホストがSSL証明書を使用していない場合、彼は平文である必要があります。


よく私は質問に困惑しています。Qのタイトルは黒で、コンテンツは白です。
イラクリス

これは白いものです
イラクリス


0

同じIPに2つの証明書を追加しようとすると、最初に読み取られた証明書のみがすべての場所で使用されます。1つのIP-1つのSSL証明書。

同じIPでより多くのSSL証明書を取得したい場合は、複数ドメイン(いわゆるUCC- @ godaddyをチェックアウト)またはワイルドカード(より高価な)証明書を取得することを検討してください。


Apache confで最初に追加された証明書が両方に使用されるということですか?
-nitins

1
サイトAとBに2つの証明書があり、Apacheがホストの構成をA.conf、B.confの順にロードした場合、A.confの証明書が使用されます。またはその逆。
アンドレイスカイニコフス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.