Несколько сайтов на сервер Apache с SSL, показывающий неправильный сайт с HTTPS

У меня есть сервер Debian, на котором запущено несколько клиентских сайтов. Большинство из них не поддерживают протокол SSL, поэтому доступ к HTTP по-настоящему прекрасен.

У меня есть один клиент с сертификатом SSL, и доступ к их сайту через HTTPS тоже прекрасен.

Проблема возникает, если вы пытаетесь получить доступ к одному из других сайтов с HTTPS, который вы перенаправляете на другой сайт с сертификатом SSL.

Например, скажем, у нас на сервере есть следующие сайты:

alpha.net
bravo.net
charlie.net (SSL)
delta.net

Итак, как вы можете видеть, charlie является единственным с SSL, и независимо от того, переходите ли вы на http charlie.net или https charlie.net, он отлично работает.

http для всех других сайтов хорошо, но если вам нужно перейти на https alpha.net, изначально он выдает ошибку с недопустимым сертификатом и позволяет продолжить, но в то время как в адресной строке есть alpha.net, его фактическое отображение сайта charlie.net в браузере.

Я исследовал SNI, и как если бы на каких-либо других сайтах был SSL, мне нужно будет разместить их на определенных IP-адресах (что-то еще мне нужно, чтобы попытаться понять, как поступать, как я понятия не имею), но я не почему это происходит или как я его разрешаю.

Кто-нибудь еще сталкивался с этим раньше и как вы его обошли?

Большое спасибо,

Rob

Ответ 1

Это не имеет ничего общего с SNI, поскольку в настоящее время у вас только один сервер HTTPS. Что происходит, как вы сказали в своем комментарии, является то, что домен alpha.net разрешает IP-адрес вашего сервера. Ваш сервер Apache настроен для прослушивания запросов на порт 443 на этом IP-адресе и для обслуживания содержимого charlie.net для этих запросов. (И ошибка сертификата означает, что браузер заметил несоответствие между именем предполагаемого имени сертификата и именем домена, используемым для запроса.)

Перенаправление с HTTPS на HTTP, вероятно, представляет большую проблему, так как вам нужны действительные сертификаты для каждого домена, чтобы вы не представили своим пользователям еще одно предупреждение о безопасности. Это приведет к созданию виртуальных хостов для alpha.net:443 и т.д. На сервере с поддержкой SNI (то есть в более поздних версиях Apache 2.2+ с openssl) и добавлении перенаправления следующим образом:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Вероятно, самый простой курс для вашей проблемы - использовать другой IP-адрес для charlie.net. С помощью этой установки не будет никакого способа для alpha.net(и т.д.) Отображать содержимое другого сайта.

Ответ 2

Если у вас несколько IP-адресов на вашем сервере, используйте уникальный для сайта SSL, все сайты, не имеющие SSL, используют другой IP-адрес.

Так как SSL не заботится о том, какой домен вы посещаете, он заботится только о том, одобрен ли текущий домен из списка доменов (Common Name), которые он получает от IP-адреса.