В прошлом у меня были проблемы со старыми записями DNS (принадлежащими другим людям), указывающими на сервер. Чтобы сервер не отвечал и создавалось впечатление, что эти имена хостов содержат точные копии моего контента, я использую NameVirtualHost и делаю виртуальный хост по умолчанию всегда отвечать 503 запрещено. Кажется, это хорошо работает.
Однако теперь мне интересно, как лучше всего добиться того же с помощью SSL.
Очевидно, что если бы клиент запросил страницу через HTTPS при использовании нераспознанного имени хоста, он бы получил предупреждения SSL, потому что сертификат не совпадал. Однако у них есть возможность обойти эти предупреждения. Я хотел бы запретить серверу обслуживать контент, даже если клиент решит игнорировать предупреждение SSL.
Кажется, я не могу использовать тот же трюк с NameVirtualHost, поскольку виртуальные хосты на основе имен с SSL требуют SNI, что имеет потенциальные проблемы совместимости со старыми клиентами, которых я бы предпочел избежать. Вместо этого я должен использовать виртуальный хост на основе IP. SSLRequireSSL, похоже, не помогает - он счастлив независимо от того, сработал ли сертификат.
Google является примером этого, хотя предположительно не использует apache. Если вы отредактируете свой / etc / hosts и укажете какое-то случайное имя на IP-адресе Google, при посещении его через SSL вы сначала получите предупреждение, но затем, если вы все равно продолжите, вы получите ошибку 503 - «Ошибка службы -27. Это все, что мы знаем ".
Я не уверен, что это действительно так важно. Явный дублированный сайт, возникший в результате случайной записи DNS, фактически приводил к тому, что наш контент появлялся в поисковых системах под неправильным доменным именем. В этом случае предположительно (надеюсь!) Поисковая система не будет индексировать контент, если сертификат SSL недействителен.
Тем не менее, хотелось бы сделать это правильно, если есть стандартный подход.
Как насчет простого перенаправления клиентов с неправильного доменного имени на ваш домен? Apache mod_rewrite может помочь решить эту проблему следующим образом:
RewriteEngine On
RewriteCond %{HTTP_HOST} !yourdomain.com
RewriteRule ^/(.*)$ https://yourdomain.com/$1 [R=301]
В этой конфигурации все клиенты будут перенаправлены на правильное доменное имя после игнорирования предупреждения SSL. Кроме того, поисковые боты будут индексировать ваш контент с подходящим доменным именем.