Назад | Перейти на главную страницу

Как правильно отказаться от ssl-подключений к поддоменам, у которых нет сертификата

Сейчас я впервые настраиваю (полусерьезный) сервер с nginx. У меня есть несколько доменов и поддоменов, и я хочу как можно больше использовать SSL, чтобы обеспечить безопасность трафика на мой сайт и с него. Проблема, с которой я столкнулся в последнее время, заключается в том, что я не могу правильно обрабатывать SSL-запросы к несуществующим поддоменам, не прибегая к сертификатам с подстановочными знаками.

По сути, моя установка очень близка к этот один (nginx, перенаправления на https, несколько субдоменов, сертификаты Let's Encrypt для всех допустимых субдоменов, все для недействительных доменов).

На самом деле NotNice ™, что пользователи, неправильно набравшие поддомен, получат сообщение об ошибке типа «Этому соединению нельзя доверять» (или того хуже, в зависимости от браузера). Это может подорвать доверие к моему сайту. Например https://www.my-domain.com работает, но https://ww.my-domain.com сообщит пользователю, что моему сайту нельзя доверять. Поскольку я ожидаю, что значительная часть моих читателей будет не совсем технически подкованной, я не могу ожидать, что они сами поймут или диагностируют это.

Итак, я хочу просто прервать соединение, когда кто-то посещает несуществующий поддомен, чтобы они получали ошибку «соединение отклонено», а не ошибку «этот сайт злой, вы могли быть взломаны». Это не только ближе к истине (сайту можно доверять, там просто ничего нет), но и может помочь им обнаружить свою ошибку, поскольку указывает на неправильный адрес, а не сертификат.

Фактически, это уже то, что я делаю для соединений без SSL. У меня есть директива сервера catchall в nginx, которая просто возвращает 404 для всего, что поступает на порт 80 и не соответствует известному поддомену. Так как же мне на самом деле отказаться от ssl-соединения в nginx?

Я знаю, что не могу использовать коды возврата HTTP, поскольку в этом случае вообще нет соединения. В этом весь смысл ssl. Я не могу использовать подстановочные сертификаты, так как они слишком дороги. Я бы не хотел прикасаться к iptables, так как это неудобно поддерживать при изменении поддоменов. Однако, если это лучшее решение, я мог бы изучить его. Есть ли какие-нибудь умные записи DNS, которые могут помочь?

Я бы отключил функцию отслеживания недействительных доменов. Таким образом, пытаясь получить доступ https://ww.my-domain.com в веб-браузере приведет к менее пугающему "Сервер не найден" ошибка, с которой пользователь будет более знаком. В случае с Firefox он предлагает пользователю,

Проверьте адрес на наличие ошибок ввода, например ww.example.com вместо www.example.com.

Это, по-видимому, лучшая альтернатива отказу от получения сертификата с подстановочными знаками, чтобы соответствовать всем возможностям, настраиваемым универсальным разрешением DNS.