Серверы и VDS

Настраиваем домен и SSL так, чтобы браузер перестал ругаться

Эдгар Косулин 4 мин чтения

Серия «Свой сервер с нуля» · часть 11 из 13

Содержание

Сайт вы подняли, но браузер недоволен. В лучшем случае рядом с адресом висит серое «Не защищено». В худшем посетителя встречает красный экран во весь размер с надписью «Подключение не защищено», и человек уходит, не прочитав ни строчки. Эти предупреждения отпугивают сильнее любого плохого дизайна.

Хорошая новость в том, что браузер ругается не случайно. За каждым предупреждением стоит конкретная причина, и у каждой причины есть конкретное лечение. Сейчас расшифруем жалобы браузера и заставим их замолчать, по-настоящему, а не нажатием «всё равно перейти».

Что вообще значит замочек

Замок в адресной строке означает две вещи сразу. Первая: соединение зашифровано, и между посетителем и сайтом никто не подслушивает. Вторая, не менее важная: сайт подтвердил, что он действительно тот, за кого себя выдаёт. Доказательством служит сертификат, выданный доверенным центром сертификации (CA).

Открывая страницу, браузер быстро прогоняет проверки: соединение шифруется? сертификат настоящий? выписан на это имя? не просрочен? от центра, которому я доверяю? цепочка полная? Провалена любая, и вместо замка появляется предупреждение. Раньше настоящие сертификаты стоили денег, сегодня их бесплатно выдаёт доверенный всеми центр Let's Encrypt, так что причина «дорого» отпала.

Сначала домен: без него сертификат не выдадут

Прежде чем воевать с SSL, нужно разобраться с доменом, потому что одно без другого не работает. Чтобы выдать сертификат, центр должен убедиться, что домен действительно ваш. Делает он это просто: проверяет, что домен указывает на ваш сервер. Значит, A-запись у регистратора должна вести на IP сервера и уже «доехать», а порт 80 быть открыт. Мы проходили это в статье про запуск сайта: сначала домен, потом шифрование. Если домен ещё не направлен на сервер, сертификат вы не получите при всём желании.

Заодно сразу решите, какой адрес у вас главный (с www или без), и настройте, чтобы второй вариант переадресовывал на первый. И проследите, чтобы сертификат покрывал оба имени: это избавит от части будущих ругательств.

Расшифровываем жалобы браузера

Дальше словарь предупреждений. Найдите своё.

«Не защищено», замка нет вовсе. Сертификата нет в принципе, сайт работает по голому HTTP. Лечение: выпустить сертификат через certbot и перевести сайт на HTTPS.

«Сертификат не является доверенным» (authority invalid). Сертификат есть, но вы выписали его сами себе. Браузер таким не доверяет: мало ли кто что себе нарисовал. Лечение: взять сертификат у настоящего центра, то есть у того же Let's Encrypt, бесплатно.

«Срок действия истёк» (date invalid). Самая частая повторяющаяся беда. Сертификат был, но протух. Лечение: продлить и сразу настроить автопродление, чтобы это не повторялось каждые несколько месяцев. Certbot умеет обновлять сертификаты сам, без вашего участия; проверьте, что таймер работает.

«Имя не совпадает» (name mismatch). Сертификат выписан на example.com, а посетитель зашёл на www.example.com или наоборот. Браузер видит несоответствие и бьёт тревогу. Лечение: выписать сертификат сразу на оба имени, и на голый домен, и на www.

«Неполная цепочка». Сертификат настоящий, но сервер забыл отдать промежуточные звенья, которыми он связан с доверенным центром. Часть устройств такое не принимает. Лечение: отдавать полную цепочку (fullchain): certbot делает это автоматически, так что обычно проблема возникает при ручной настройке.

Замок есть, но «битый»: mixed content

Отдельный коварный случай. Сертификат в порядке, страница грузится по HTTPS, а замок всё равно перечёркнут или часть содержимого не отображается. Причина: смешанное содержимое (mixed content): сама страница пришла по защищённому каналу, но тянет картинки, скрипты или стили по старому, незащищённому http://. Браузеру достаточно одной такой ссылки, чтобы испортить замок.

Чаще всего это вылезает после перевода уже существующего сайта на HTTPS. Особенно у WordPress: в базе данных остаются старые ссылки с http://, прописанные ещё до переезда. Лечение: привести все внутренние ссылки на ресурсы к https или к относительному виду. Для WordPress нужно поправить адрес сайта в настройках и заменить http на https в самой базе.

Финальная гигиена

Когда сертификат на месте, добейте две вещи. Включите принудительную переадресацию с HTTP на HTTPS, чтобы никто случайно не открыл незащищённую версию, certbot настраивает это сам при выпуске. И убедитесь, что автопродление действительно включено: именно забытое продление возвращает людей к экрану «срок истёк» спустя пару месяцев спокойствия.

Что показывает браузер В чём дело Что делать
«Не защищено», замка нет сертификата нет выпустить через certbot, перейти на HTTPS
«Authority invalid» сертификат самоподписанный взять у Let's Encrypt
«Date invalid» сертификат просрочен продлить и включить автопродление
«Name mismatch» не то имя в сертификате выписать на домен и на www
Замок «битый» ресурсы грузятся по http все ссылки перевести на https

Каждое предупреждение браузера - это просто одна проваленная проверка: шифрование, подлинность, имя, срок, доверие или цепочка. Найдите, какая именно сломалась, почините её, и замок снова зеленеет. Цель ведь не в том, чтобы заставить предупреждение замолчать кнопкой «всё равно перейти» (и уж точно не приучайте к этой кнопке посетителей), а в том, чтобы честно заслужить замок. Сделайте это один раз как следует (через Let's Encrypt и автопродление), и браузер перестанет ругаться насовсем.

Серия

Свой сервер с нуля

  1. 1. «VDS, VPS, хостинг, облако: что это?» Разбираем терминологию без занудства
  2. 2. Nginx vs Apache: холивар, который пора закрыть (или нет)
  3. 3. Зачем вообще арендовать сервер, если есть условный хостинг за 100 рублей
  4. 4. SSH для тех, кто боится чёрного экрана
  5. 5. Как не запороть сервер в первый же день: топ ошибок новичка
  6. 6. SSH-ключи за 10 минут: настраиваем вход без пароля
  7. 7. Поднимаем свой сайт на VPS за вечер: честный пошаговый путь
  8. 8. Ставим WordPress на свой VPS: PHP, база и финальная сборка
  9. 9. Свой почтовый сервер: героизм или мазохизм?
  10. 10. Docker на VPS: когда это спасение, а когда стрельба из пушки по воробьям
  11. 11. Настраиваем домен и SSL так, чтобы браузер перестал ругаться
  12. 12. Бэкапы, которые реально спасут, а не лежат мёртвым грузом
  13. 13. Как прописать PTR для почтового сервера: почему в DNS домена её нет и кто её меняет
Поделиться: Telegram ВКонтакте

Новые статьи и разборы — в канале Siteko: Telegram MAX

Подписчикам: +30 дней к пробному хостингу, клиентам: +150 ₽ на баланс

Пошаговые инструкции по нашим услугам — в базе знаний

Ещё по теме

Ищете папку сайта в файловом менеджере и не находите. Как по DNS понять, на каком сервере сайт, найти его папку на VDS и почему нужного файла может не быть.

«Сервер в бою», часть 16

Сервер магазина пропал целиком. Как мы сделали резерв с репликой базы, почему облачный балансировщик не подошёл и что стоит проверить у себя.

«Сервер в бою», часть 15

Серверы и VDS 8 мин чтения

Переезд на другой VPS без даунтайма: чек-лист миграции

Поводов переехать у VPS-владельца за жизнь накапливается достаточно: у соседнего провайдера вдвое дешевле и втрое быстрее диски; старый тариф стал тесен; провайдер начал чудить; или (помните шестую статью?) вы выбрали «путь Б»: вместо release-upgrade на живую поднять свежую систему рядом. Повод есть...

«Сервер в бою», часть 14