У нас есть веб-сервер apache 2.4, работающий в нашей среде с виртуальным хостингом на основе имен. Этому серверу назначен единственный IP-адрес (например, X), который является NAT для одного частного (например, Y).
В настоящее время мои порты 80 и 443 прослушивают, как показано ниже: 0.0.0.0:80 и 0 0.0.0.0:443.
Многие веб-сайты работают через порт 80 [http] [domain1.com, domain2.com и т. Д.]
И только один веб-сайт, работающий на порту 443 [https] [скажем, abc.com]
Но когда кто-то по ошибке набирает https://domain.com он показал предупреждение SSL и отображает содержимое abc.com.
Поскольку SSL не работает с виртуальным хостингом на основе имен, это кажется нормальным. Но как я могу запретить пользователю не просматривать страницу abc.com, если он по ошибке набирает https на не-HTTP-сайте, размещенном в моей среде?
Сделайте так, чтобы самый первый VirtualHost на порту 443 обслуживал статический index.html с объяснением или ничего не обслуживал (тогда он возвращает стандартную ошибку 404, что тоже нормально).
VirtualHost является первым, когда он сначала появляется в текстовом виде в httpd.conf или в алфавитном порядке файлов в каталоге conf.d.
Здесь останутся старые браузеры, не поддерживающие SNI.
Браузеры, которые указывают имя сервера, отличное от abc.com, также попадут сюда. Пользователь по-прежнему будет видеть предупреждение о сертификате, так как предоставленный сертификат не соответствует имени хоста. Так что это уродливый обходной путь.
Второй VirtualHost на порту 443 должен обслуживать abc.com.
Браузеры, поддерживающие SNI (все современные браузеры), останутся здесь.