/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
の仮想ホストがロードされます。どうすればこれに対抗できますか?
これは、サブドメイン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>