
私のサーバーには複数の仮想ホストがあり、
www.example.com
sub.example.com
www.example.nl
私の DNS 設定では、すべてが同じサーバーを指しています。
apache2 構成には、http 用と https 用のデフォルトの構成ファイルがあり、追加のサイト用の追加の vhosts があります。すべての近似値を にリダイレクトしますwww.example.com
。すべての特定のサイトには証明書があります。
私のファイルはこんな感じです
000-default.conf (redirects to https://www.example.com)
default-ssl.conf (serves https://www.example.com)
sub.example.com.conf (redirects to https://sub.example.com)
sub.example.com-ssl.conf (serves https://sub.example.com)
www.example.nl.conf (redirects to https://www.example.nl)
www.example.nl-ssl.conf (serves https://www.example.nl)
問題は、他のすべてのリクエスト (たとえば、be-creative.example.nl
) が、最初にロードされた構成にデフォルト設定されることです。 これは http (000-default
一致してリダイレクトされます) では機能しますが、 に有効な証明書がロードされていないため、https では機能しません。be-creative.example.nl
したがって、リダイレクトすることも、有効なページを提供することもできません。
を無効にするとdefault-ssl.conf
、リクエストは に一致しsub.example.com-ssl.conf
、間違った証明書が引き続き提供されます。
質問: 証明書がないこれらのリクエストをエレガントに処理するにはどうすればよいでしょうか? 最初に有効な一致する証明書がなくても、http にリダイレクトするにはどうすればよいでしょうか?
答え1
私が自分のサーバー (CentOS、Apache 2.4) でこの問題を解決するには、有効な SSL 証明書 (Let's Encrypt から無料で入手) を含む汎用ページ (invalidssl.example.com) を用意し、それをデフォルト設定で設定します。こうすることで、非 SSL ドメインへの https リクエストでは、代わりにわかりやすいエラー メッセージを含む汎用ページが表示されます。
あなたの質問に答えます:
https経由でページをリクエストしている訪問者にコンテンツ(ページでも転送応答でも)を提供し、ブラウザの警告をトリガーしない唯一の方法は、リクエストされたドメインの有効なSSL証明書で応答することです。無料のSSL証明書は今日では簡単に入手できるので、個人的にはこの問題が発生する理由はないと思います(暗号化しましょう!)。