Браузер пишет «Не защищено». Что это и как исправить
Надпись «Не защищено» рядом с адресом сайта пугает клиентов и роняет продажи. Причина почти всегда одна из четырёх, и три из них исправляются за час.
Что означает предупреждение
Браузер пишет «Не защищено», когда страница открывается по протоколу http:// без шифрования, или когда шифрование есть, но с сертификатом что-то не так. В первом случае надпись серая и тихая, во втором вы увидите красный экран «Подключение не защищено», «Ваше подключение не является приватным» или код вроде NET::ERR_CERT_DATE_INVALID.
Для посетителя это выглядит как «сайт опасный», хотя чаще всего опасности нет: просто сертификат не продлили или забыли переключить сайт на https. Но пока надпись висит, часть людей уходит, а Яндекс понижает такие страницы в выдаче.
Четыре причины и как их отличить
1. Сертификат истёк
Самая частая причина. Бесплатные сертификаты Let's Encrypt живут 90 дней и должны продлеваться автоматически. Если автопродление сломалось (сменили хостинг, закрыли порт 80, поменяли DNS), сайт однажды утром открывается с красным экраном. Проверить просто: нажмите на замок или на надпись в адресной строке, откройте «Сертификат» и посмотрите срок действия.
2. Сертификата нет вообще, сайт работает по http
Обычно на старых сайтах или после переезда на новый хостинг. Адрес начинается с http://, а при попытке открыть https:// сайт не открывается или показывает чужой домен.
3. Сертификат выдан на другое имя
Например, есть сертификат на site.ru, а человек открыл www.site.ru, и на www сертификата нет. Ошибка называется ERR_CERT_COMMON_NAME_INVALID. Лечится перевыпуском сертификата сразу на оба имени.
4. Смешанный контент (mixed content)
Сайт открывается по https, но внутри страницы картинки, скрипты или шрифты подключены по http://. Тогда замок пропадает, а в консоли браузера появляется «Mixed Content». Такое бывает после переноса сайта на https, когда ссылки в базе данных остались старыми.
Как исправить
- Истёк сертификат. На хостинге с панелью (Timeweb, Beget, reg.ru, ISPmanager) зайдите в раздел SSL и нажмите «Выпустить» или «Продлить», это бесплатно. На своём сервере:
certbot renew, а потом разобраться, почему не сработал автопродлевающий cron. - Нет сертификата. Выпустите Let's Encrypt в панели хостинга, затем включите редирект с http на https и в настройках CMS замените адрес сайта на https.
- Не совпадает имя. Перевыпустите сертификат, указав и домен, и его версию с www.
- Смешанный контент. В WordPress помогает плагин Really Simple SSL или замена
http://site.ruнаhttps://site.ruв базе данных. В Битриксе и самописных сайтах ссылки правятся в шаблоне и в настройках.
# Проверить сертификат из терминала: срок и на какие имена выдан
echo | openssl s_client -servername site.ru -connect site.ru:443 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
Чтобы больше не повторялось
Проблема с истёкшим сертификатом обычно всплывает от клиентов, а не от вас. Подключите бесплатный мониторинг: он следит за сроком сертификата и напишет в Telegram за две недели до окончания, а заодно сообщит, если сайт перестал открываться.
Починим сегодня, от 2 900 ₽
Опишите проблему, ИИ назовёт цену за минуту. Оплата после оценки, работа в тот же день, 14 дней гарантии.
Разработчик с 10-летним опытом, ИП, по оферте и с закрывающими документами.