Отключите резервный SSL в Apache2 или перенаправьте без соответствующего сертификата

1

У меня есть несколько виртуальных хостов на моем сервере, скажем, я обслуживаю

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, не имея предварительно действующего сертификата соответствия?

TacoV
источник

Ответы:

0

Как я могу решить это самостоятельно (CentOS, Apache 2.4), это иметь общую страницу (invalidssl.example.com) с действующим сертификатом SSL (получил бесплатный от Let's Encrypt) и установить его в конфигурации по умолчанию. Таким образом, любые запросы https к домену, отличному от ssl, будут отображать ту общую страницу, которая содержит приятное сообщение об ошибке.

Чтобы ответить на ваш вопрос:

Единственный способ доставить контент посетителю (будь то страница или прямой ответ), запрашивающему страницу через https и не вызывающему предупреждения браузера, - ответить действительным сертификатом SSL для запрошенного домена. Лично я не вижу причин, по которым у вас возникла бы эта проблема, поскольку бесплатные SSL-сертификаты в настоящее время легко доступны (посмотрите на Давайте зашифруем !).

cascer1
источник
Но если кто-то достиг этой страницы с другого URL ( blah.example.com ) браузер по-прежнему сначала показывает сообщение «небезопасная страница!», прежде чем он увидит приятное сообщение об ошибке, верно?
TacoV
1
Ах да, это верно! Единственный способ подачи контента по протоколу https без предупреждения браузера - использовать действительный сертификат SSL для домена, запрошенного посетителем. Я не думаю, что есть какой-то способ обойти это (что разработано, потому что, если бы вы могли обойти это, это было бы довольно небезопасно)
cascer1
1
У меня есть эта проблема в основном, так как мои домены настроены на всеобщее обозрение (* .example.com отправляется на этот сервер), а Let's Encrypt не поддерживает групповые сертификаты. На самом деле существует сообщение (браузер?), Когда вы выключаете все сайты SSL и пробуете https (ERR_SSL_PROTOCOL_ERROR), что для IMO предпочтительнее, чем обслуживание неверного сертификата (ERR_CERT_COMMON_NAME_INVALID).
TacoV
Если у вас есть ошибка протокола, я не думаю, что люди смогут попасть на сайт совсем , Единственный способ, которым я знаю, как это сделать, - это изменить конфигурацию openssl так, чтобы он не поддерживал шифры, которые поддерживает клиент, но тогда он также не работал бы с действительным сертификатом. Если ваши посетители не знают слишком много о конфигах apache и openssl, я не думаю, что какая-либо ошибка должна быть предпочтительнее другой, поскольку они просто исчезнут, потому что они все равно не понимают этого. & GT; & GT;
cascer1
& GT; & GT; Одна вещь, которую вы могли бы сделать, это написать программу, которая сканирует журналы apache для запросов к недействительным поддоменам и периодически запрашивает сертификаты Let's Encrypt для этих поддоменов. Это не идеально, но я не могу придумать лучшего решения, к сожалению.
cascer1