«Ваше подключение не защищено»: что означают ошибки NET::ERR_CERT_* и как их исправить
Алый экран с этой надписью — самая заметная ошибка интернета: браузер прямо говорит посетителю «не ходи туда». Под одной страшилкой скрывается десяток разных кодов NET::ERR_CERT_*, и код внизу экрана — главная улика: по нему причина определяется почти однозначно. Разбираем расшифровку кодов, действия посетителя и владельца — и цену вопроса для бизнеса.
Читаем код под предупреждением
Рукопожатие с сервером состоялось, сертификат получен — но браузер ему не верит. Почему именно — написано мелким шрифтом под предупреждением:
| Код | Что значит | Чаще всего виноват |
|---|---|---|
| ERR_CERT_DATE_INVALID | Сертификат истёк — или часы устройства врут | Владелец (просрочка) / посетитель (время) |
| ERR_CERT_AUTHORITY_INVALID | Браузер не доверяет выдавшему центру: самоподписанный сертификат, неполная цепочка, сертификат российского УЦ без установленного корня | Владелец; иногда — антивирус-посредник у посетителя |
| ERR_CERT_COMMON_NAME_INVALID | Сертификат выдан на другое имя: открыли www, а в сертификате только апекс (или наоборот), либо на сервере «чужой» сертификат | Владелец |
| ERR_CERT_REVOKED | Сертификат отозван удостоверяющим центром | Владелец — срочно перевыпускать |
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | Формально не про сертификат: не сошлись протоколы — см. нашу статью про ERR_SSL_PROTOCOL_ERROR | Владелец |
Если вы посетитель: два честных случая «сам виноват»
Первое, что стоит проверить, — часы устройства: криптография сверяет срок сертификата с вашим временем, и сбитая дата (севшая батарейка, отключённая синхронизация) превращает весь интернет в «незащищённый». Второе — антивирус с проверкой HTTPS: он подменяет сертификаты сайтов своими, и если его корень не установился корректно, браузер честно бьёт тревогу на каждом сайте. Если же предупреждение появляется на одном конкретном сайте, а время и антивирус ни при чём — проблема на стороне сайта, и кнопка «Перейти всё равно» — плохая идея на любом сайте, где вы вводите пароли или платите: предупреждение существует ровно для того, чтобы вас не переадресовали на подделку.
Если вы владелец: три главных сценария
Истёк сертификат. Банальный и самый массовый случай — особенно теперь, когда сертификаты живут 90 дней, а Let's Encrypt перестал присылать напоминания. Сколько стоит день с алым экраном, мы считали в кейсе про истёкший сертификат: конверсия падает практически до нуля — предупреждение браузера останавливает даже лояльных клиентов.
Неполная цепочка. Коварный вариант AUTHORITY_INVALID: на сервер поставили сертификат без промежуточных звеньев цепочки. Часть браузеров и устройств достраивает цепочку сама — у них «всё работает», а часть (особенно старые Android и всякие встроенные клиенты) выдаёт предупреждение. Классическая ошибка «у меня открывается, у клиентов нет». Диагноз ставит openssl s_client -connect домен:443 -servername домен -showcerts — в выводе должна быть вся цепочка, а не один сертификат.
Не то имя. COMMON_NAME_INVALID почти всегда означает организационную ошибку: сертификат выпущен на domain.ru без www (или наоборот), поддомен не включён в SAN, либо на IP крутится другой сайт и отдаёт свой сертификат. Правило: сертификат должен покрывать все имена, по которым сайт реально открывают, — включая www и поддомены с редиректами.
Сертификаты российских удостоверяющих центров браузеры с обычными хранилищами доверия считают AUTHORITY_INVALID — их корни предустановлены не везде. Если ваш сайт использует такой сертификат, часть аудитории с обычным Chrome/Safari увидит предупреждение. Эту специфику и историю с отзывами сертификатов мы разбирали в кейсе про отозванные сертификаты.
HSTS: когда кнопки «всё равно» нет вообще
У части сайтов предупреждение выглядит ещё жёстче: без ссылки «Дополнительные» и возможности перейти. Так работает HSTS — заголовок, которым сайт однажды сказал браузеру «ходи ко мне только по HTTPS и никогда не позволяй исключений». Для безопасности это отлично: даже согласный на риск пользователь не сможет попасть на подделку. Для владельца это означает нулевую терпимость к просрочкам: с HSTS истёкший сертификат закрывает сайт наглухо, у посетителей нет даже плохого обходного пути. Если включаете HSTS (а для сайтов с оплатой и логинами это правильная практика) — контроль срока сертификата перестаёт быть желательным и становится обязательным.
Почему это дороже любой другой ошибки
Обычные ошибки посетитель воспринимает как «сайт сломался». Алый экран — как «сайт опасен»: браузер прямым текстом отговаривает заходить, а слова «злоумышленники могут похитить ваши данные» бьют по доверию к бренду сильнее любого простоя. При этом технически проблема часто копеечная — продлить сертификат, доложить цепочку, перевыпустить с нужными именами. Весь ущерб — от того, что о проблеме узнали позже посетителей. Сертификат — редкий компонент сайта, который умирает строго по расписанию: его истечение можно и нужно видеть за недели.
Пруфен выполняет проверку SSL-сертификата снаружи, глазами браузера: срок действия, цепочка, соответствие имени — с интервалом от 1 часа и предупреждением заранее, пока до алого экрана ещё недели. В паре с проверкой домена это закрывает оба «календарных» риска сайта — сертификат и домен. Обе проверки есть на бесплатном плане.
Частые вопросы
Предупреждение на всех сайтах подряд — сайты сговорились? Нет, проблема локальная: сбитое время на устройстве либо антивирус/фильтр, вмешивающийся в HTTPS. Все сайты мира одновременно не ломаются.
Можно ли нажимать «Перейти всё равно»? Только если вы точно понимаете причину (например, свой собственный сервер с самоподписанным сертификатом) и не собираетесь вводить никакие данные. На чужих сайтах с логинами и оплатой — нельзя: предупреждение не отличает «забыли продлить» от «вас ведут на подделку».
У меня открывается нормально, клиенты присылают скриншот с предупреждением. Кому верить? Клиентам. Типовые причины расхождения: неполная цепочка (ваш браузер достроил, их — нет), разные имена (вы ходите без www, они с www), кэш соединений у вас. Проверьте сайт внешней проверкой и openssl — глазами это не решается.
Как не попадать в эту ситуацию вообще? Автопродление сертификата плюс независимый внешний контроль срока и цепочки. Как правильно собрать эту связку — в статьях про проверку SSL и Let's Encrypt.