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証明書を購入したりせずに、これを防ぐ方法はありますか?
編集:余分なテキストを削除するだけ
サーバー名表示(SNI)という名前のSSL拡張機能を使用する必要があります。この拡張機能により、サーバーはどの名前付き仮想ホスト要求が指定されているかを判別し、それに応じてパッチを適用できます。
ApacheはおそらくSNIをサポートして構築されていますが、それを確認するには、IPに2つの名前の仮想ホスト(ポート443)をセットアップし、Apacheを起動してみてください。 ApacheがSNIをサポートしていない場合、error_logに「SSLと組み合わせて名前ベースの仮想ホストを使用しないでください!!」と表示されます。 SNIが組み込まれている場合、エラーログには「[警告] Init:名前ベースのSSL仮想ホストはTLSサーバー名表示サポート(RFC 4366)を備えたクライアントでのみ機能する」と表示されます。
また、これが機能するためには、ブラウザがSNIもサポートする必要があることにも注意してください。すべての主要なブラウザのサポートは
つまり、簡単に言えば、同じIP上にそれぞれのSSL証明書を持つ2つ以上の異なるドメインを設定できます。最初のSSLドメインと同じように他のSSLドメインを構成するだけです。 ApacheにSNIのサポートがない場合は、別のApacheパッケージを見つけるか、SNIをサポートしてこのパッケージを再構築して機能させる必要があります。