web-dev-qa-db-ja.com

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://example.comにアクセスすると)すべてが良好ですが、httpsのような同じサーバーを指している他のドメインに移動した場合、理由は不明です。 -)://anydomain.com次に、上記の仮想ホストが応答しています。明らかにブラウザは証明書がドメインと一致しないと言っていますが、それを無視した後、私はhttps://example.com under https:// anydomain.com、それでもhttp://anydomain.com私はまったく異なるウェブサイトを持っています。

https on http)を使用できることを私は知っています://anydomain.com別のIPアドレスで別の証明書を設定する必要があります-それは私の問題ではありません。

次のいずれかのオプションを実行したいと思います。

  • https://anydomain.comhttp://anydomain.comを指す必要があります
  • https://anydomain.com 404エラーを返します

どうすればこれを達成できますか?前もって感謝します。

1
Tomasz Ozga

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

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

したがって、次のようになります。

<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証明書を持つhttpsWebサイトをいくつでも持つことができます。仮想SSLホスティングの制限は、非SNIクライアントが、証明書を提供する前にアクセスしたいvhostをSSLレイヤーにアドバタイズしないという事実によるものです。

1
eltrai