サイトのサブドメインにSSLをインストールしました。この奇妙な動作を除いて、すべてが完全に機能します。
ブラウザを次の場所に向けると、これらのドキュメントルートが提供されます。
http://domain.com -> /var/www [GOOD]
https://sub.domain.com -> /media/sub [GOOD]
https://domain.com -> /media/sub [BAD]
そのリストの最後のURLは、/var/www
ではなく/media/sub
を提供する必要があります。つまり、ユーザーをhttps://domain.com
からhttp://domain.com
に安全にリダイレクトしたいと思います。
これが私のVirtualHostsです。
domain.com
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www
</VirtualHost>
sub.domain.com
<VirtualHost *:443>
ServerName sub.domain.com:443
DocumentRoot /media/sub
SSLEngine on
SSLCertificateFile /etc/Apache2/ssl/Apache.crt
SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
</VirtualHost>
私が試したこと
ServerName
がhttps://domain.com
の*:443
VirtualHostがないため、domain.com
が間違ったVirtualHostを提供していることが示唆されました。
これを修正するために、私はこれを試してみました:
domain.com
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:443>
ServerName domain.com
Redirect / http://domain.com/
</VirtualHost>
私はこのがうまくいくはずだと感じています。 (https
リクエストをhttp
にリダイレクトして、正しいドキュメントルートを提供する必要があります。)
ただし、これを行うと、Apache2も起動しません。それは私にこのエラーを与えます:
[error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
ご指導ありがとうございます。
これは機能しません。これはSSLの仕組みではありません。 SSLを有効にするには、SSLEngineをオンにし、サーバー証明書とキーのディレクティブを設定する必要があります。
443を聞いているだけでは役に立ちません。
Domain.comでSSLを実行する予定がない場合は、理想的にはHTTPS経由でSSLにアクセスしようとしないでください。ユーザーがhttps経由でdomain.comにアクセスしようとする有効なユースケースはありますか?