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