
私のサーバーは、サイトwwww
へのリクエストをリダイレクトするために次の行を追加するまでは、自己署名 SSL 証明書で正常に動作していました。non-www
<VirtualHost *:443>
ServerName www.mydomain.com
Redirect permanent / https://mydomain.com/
</VirtualHost>
私が受け取ったエラーは次のとおりです:
サーバーは SSL 対応である必要がありますが、証明書が設定されていません [ヒント: SSLCertificateFile] ((null):0)
単純なリダイレクトには SSL は必要ないと思いました。この単純なリダイレクトを機能させるにはどうすればよいですか?
答え1
問題は、SSL を使用する場合、複数の NameVirtualHost を持つことができないことです。これは、さまざまな Web サーバーで共通する問題です。
理由はネットワーク層にあります。HTTP は SSL の上にあるため、最初に SSL 接続を確立してから HTTP 要求を送信する必要があります。ただし、HTTP 要求によって、この要求に対応する NameVirtualHost が決定されます。同時に、SSL 証明書は NameVirtualHost に固有のものになる可能性があるため、SSL ハンドシェイクの時点でこの要求を処理する NameVirtualHost がまだ不明な場合、SSL 接続をどのように確立できるでしょうか。
この問題について話し合い、回避策を提案する人は増えています。異なる仮想ホストを異なる IP またはポートに配置するなど、SSL 接続を確立する前に IP とポートがわかっているため、この方法で問題は解決します。
さらに、VirtualHost には、SSLEngine on
などのSSL 関連のディレクティブがありませんSSL*
。おそらくこれが、ポート 443 でリッスンするように SSL なしの VirtualHost を構成したのに対し、ポート 443 の別の VirtualHost では SSL が有効になっているため、このエラーが発生する理由だと思います。上記の理由により、これは機能しません。