web-dev-qa-db-ja.com

Apacheを使用した同じIP上の2つのSSL仮想ホスト

1つのIPアドレスを持つApacheサーバーがあります。 (Debianサーバー上)。

Http用に複数の仮想ホストとhttps用に1つの仮想ホストがあります

1つの仮想ホスト、トラフィックをhttps仮想ホストにリダイレクトすると、これは正常に機能します。

<VirtualHost *:80>
ServerName mymainsite.com
ServerAlias www.mymainsite.com
ServerAlias myothersite.org
ServerAlias www.myothersite.org
    RewriteEngine on
    RewriteRule ^(.*)$ https://www.mymainsite.com$1 [L,R=301]
(...)

私はこのようなhttps用の別の仮想ホストを持っています

<VirtualHost *:443>
ServerName www.mymainsite.com
(...)

これは正常に機能し、https以外のすべてのhttpsはhttpsに認識されます。これはすばらしいことですが、問題が発生します。

時々人々はこのURLに行きます https://www.myothersite.org

これはhttpsvhostによって応答され、「間違った証明書」エラーを作成します。

質問は次のとおりです。2番目のIPアドレスを使用したり、マルチURLまたはワイルドカードSSL証明書を購入したりせずに、これを防ぐ方法はありますか?

編集:余分なテキストを削除するだけ

2
Sverre

サーバー名表示(SNI)という名前のSSL拡張機能を使用する必要があります。この拡張機能により、サーバーはどの名前付き仮想ホスト要求が指定されているかを判別し、それに応じてパッチを適用できます。

ApacheはおそらくSNIをサポートして構築されていますが、それを確認するには、IPに2つの名前の仮想ホスト(ポート443)をセットアップし、Apacheを起動してみてください。 ApacheがSNIをサポートしていない場合、error_logに「SSLと組み合わせて名前ベースの仮想ホストを使用しないでください!!」と表示されます。 SNIが組み込まれている場合、エラーログには「[警告] Init:名前ベースのSSL仮想ホストはTLSサーバー名表示サポート(RFC 4366)を備えたクライアントでのみ機能する」と表示されます。

また、これが機能するためには、ブラウザがSNIもサポートする必要があることにも注意してください。すべての主要なブラウザのサポートは

  • Mozilla Firefox2.0以降
  • Opera 8.0以降(TLS 1.1が有効になっている場合)
  • Internet Explorer 7.0以降(XPではなくVista上)
  • グーグルクローム
  • Mac OS X10.5.6上のSafari3.2.1

つまり、簡単に言えば、同じIP上にそれぞれのSSL証明書を持つ2つ以上の異なるドメインを設定できます。最初のSSLドメインと同じように他のSSLドメインを構成するだけです。 ApacheにSNIのサポートがない場合は、別のApacheパッケージを見つけるか、SNIをサポートしてこのパッケージを再構築して機能させる必要があります。

2
Hrvoje Špoljar