SSL 仮想ホストでキャッチオールを無効にする方法

SSL 仮想ホストでキャッチオールを無効にする方法

私の仮想ホストは次のようになります:

<VirtualHost example.com:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl-keys/example/example.crt
  SSLCertificateKeyFile /etc/apache2/ssl-keys/example/example.key
  SSLCACertificateFile /etc/apache2/ssl-keys/example/COMODO_EV_SSL.ca-bundle.crt

  SSLProtocol -ALL -SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

  SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
  BrowserMatch ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  DocumentRoot /home/example/www/current/web
  ServerName example.com
  ServerAlias www.example.com
  <IfModule php5_module>
    php_value newrelic.appname "Example"
  </IfModule>
</VirtualHost>

もし私がhttps://例.comすべては順調ですが、私には理由は分かりませんが、同じサーバーを指している他のドメインに行くと、https://任意のドメイン上記の仮想ホストが応答しています。ブラウザは証明書がドメインと一致していないと表示しますが、それを無視すると、https://例.comhttps://任意のドメイン、その下でもhttp://任意のドメイン私は全く別のウェブサイトを持っています。

使用できることは知っていますhttpsの上http://任意のドメイン別の IP アドレスで別の証明書を設定する必要がありますが、それは私の問題ではありません。

次のいずれかのオプションを実現したいと考えています。

  • https://任意のドメイン指すべきhttp://任意のドメイン
  • https://任意のドメイン404エラーを返す

これを実現するにはどうすればいいでしょうか?よろしくお願いします。

答え1

ポートに 1 つの vhost のみを定義した場合、Apache によってデフォルトの vhost として扱われ、それに接続するすべてのクライアントに提供されます。

したがって、別の仮想ホストを追加し、それをデフォルトのものとして扱い、404クライアントとなるように設定する必要がありました。example.comの証明書と同じ証明書を使用する必要があります。これは、example.comにアクセスするクライアントにも使用されるためです。https://example.com使用しない場合スニ

つまり、次のようになります。

<VirtualHost _default_:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl-keys/example/example.crt
  SSLCertificateKeyFile /etc/apache2/ssl-keys/example/example.key
  SSLCACertificateFile /etc/apache2/ssl-keys/example/COMODO_EV_SSL.ca-bundle.crt

  SSLProtocol -ALL -SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

  Redirect 404 /
</VirtualHost>

SNI のないクライアントを気にしない場合 (最近ではそのようなクライアントは少数です)、同じ IP 上に異なる TLS 証明書を持つ任意の数の https Web サイトが存在する可能性があります。仮想 SSL ホスティングの制限は、証明書が提供される前に、非 SNI クライアントがアクセスしたい仮想ホストを SSL レイヤーに通知しないという事実によります。

関連情報