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

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

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

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

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

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

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

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

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

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

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

обкрадывать

2 ответа

Это не имеет никакого отношения к 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 (и т. Д.) Не будет возможности отобразить содержимое другого сайта.

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

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

Другие вопросы по тегам