web-dev-qa-db-ja.com

ApacheのVirtualHostが443で未定義のサブドメインをリッスンしないようにするにはどうすればよいですか?

/etc/Apache2/sites-available/example.com ::

<VirtualHost *:443>
        ServerName www.example.com
        DocumentRoot /var/www/example.com/htdocs
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

foo.example.com用に構成された仮想ホストもありますが、ポート80でのみリッスンします。

この同じサーバーを指すfoo.example.comのAレコードがあります。ブラウザでhttps://foo.example.comにアクセスすると、www.example.comの仮想ホストがロードされます。どうすればこれに対抗できますか?

3

これは、サブドメインfoo.example.comのSSLを設定していないため、www.ドメインを使用しているためです。 SSLが必要ない場合は、ポート443で実行されている仮想ホストをすべて削除することができます。それ以外の場合は、構成に以下を追加します。

foo.example.comがSSLを操作できるようにする

<VirtualHost *:443>
        ServerName foo.example.com
        DocumentRoot /var/www/foo.example.com/htdocs
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

HTTPSからHTTPへのリダイレクト

<VirtualHost *:443>
        ServerName foo.example.com
        RewriteEngine on
        RewriteCond %{HTTP_Host} ^foo.example.com
        RewriteRule ^/(.*)$ http://foo.example.com/$1 [L,R=301]
        DocumentRoot /var/www/foo.example.com/htdocs
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>

または404エラーが必要な場合は、以下を使用します

<VirtualHost *:443>
        ServerName foo.example.com
        RewriteEngine on
        Redirect 404 /
        ErrorDocument 404 "Page Not Found"
        DocumentRoot /var/www/foo.example.com/htdocs
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
2
Simon Hayter