Ошибка TLS: причины и устранение¶
Ошибка TLS — обобщённое обозначение сбоев, возникающих при установке защищённого соединения по протоколу TLS (Transport Layer Security) между клиентом и сервером. TLS — криптографический протокол, обеспечивающий конфиденциальность, целостность и аутентификацию данных в сетевых протоколах, прежде всего в HTTPS. Ошибки TLS проявляются в отказе браузера или приложения открыть сайт, в обрыве защищённого соединения, в сообщениях вида «Соединение не защищено», «NET::ERR_CERT_», «SSL_ERROR_» или «502 Bad Gateway» при работе прокси. По статистике служб технической поддержки хостинг-провайдеров, ошибки сертификатов и рукопожатий TLS составляют заметную долю обращений, связанных с недоступностью сайтов.
¶Природа протокола TLS
TLS разработан как замена устаревшего протокола SSL. Текущая основная версия — TLS 1.3 (RFC 8446, 2018), предыдущая — TLS 1.2 (RFC 5246, 2008). Протокол работает поверх транспортного уровня TCP и используется в HTTPS, SMTPS, IMAPS, FTPS и других защищённых протоколах.
Рукопожатие TLS включает согласование версии протокола, набора шифров (cipher suites), обмен ключами и аутентификацию сервера (а при взаимной аутентификации — и клиента) с помощью цифровых сертификатов X.509, выдаваемых удостоверяющими центрами (CA). Любое нарушение этого процесса — несовместимость версий, отсутствующий сертификат, несоответствие имени хоста, истёкший срок действия — приводит к ошибке TLS.
¶Основные причины ошибок
¶Проблемы с сертификатом
Наиболее частая категория ошибок. К ним относятся:
- Истёкший сертификат — срок действия истёк, и клиент отказывается доверять соединению. Классическая причина забытого продления.
- Несоответствие имени хоста (hostname mismatch) — сертификат выдан на другое доменное имя или не покрывает поддомен.
- Недоверенный корневой центр сертификации — клиент не имеет в хранилище корневого сертификата CA, выдавшего сертификат сервера (часто у самоподписанных сертификатов).
- Неполная цепочка сертификации (incomplete chain) — сервер не отправил промежуточные сертификаты, и клиент не может построить путь доверия до корневого CA.
- Отзыв сертификата — сертификат помечен как отозванный по спискам CRL или OCSP.
¶Проблемы рукопожатия и шифрования
- Несовместимость версий протокола — клиент поддерживает только TLS 1.3, а сервер настроен на SSLv3 или TLS 1.0, либо наоборот.
- Несовместимость наборов шифров — ни один cipher suite не подходит обеим сторонам.
- Сломанная цепочка доверия — промежуточный сертификат отсутствует или повреждён.
- Проблемы с SNI (Server Name Indication) — сервер не получил или игнорирует имя запрашиваемого хоста и отдаёт сертификат другого сайта.
¶Сетевые и конфигурационные причины
- Прокси и корпоративные шлюзы, выполняющие TLS-инспекцию (MITM-прокси), подменяют сертификат, и клиент не доверяет прокси-сертификату.
- Неправильное системное время — сертификат «ещё не вступил в силу» или «уже истёк» относительно локальных часов.
- Проблемы DNS — запрос ушёл не на тот сервер, и тот отдаёт чужой сертификат.
- Файрвол или DPI, режущие или подменяющие трафик.
¶Коды ошибок
| Код / сообщение | Типичная причина |
|---|---|
ERR_CERT_DATE_INVALID | Истёкший сертификат или неверное системное время |
ERR_CERT_COMMON_NAME_INVALID | Несоответствие имени хоста |
ERR_CERT_AUTHORITY_INVALID | Недоверенный или самоподписанный CA |
ERR_SSL_PROTOCOL_ERROR | Несовместимость версий/шифров, повреждённый handshake |
SSL_ERROR_BAD_CERT_DOMAIN (Firefox) | Несоответствие имени хоста |
SEC_ERROR_UNKNOWN_ISSUER (Firefox) | Неизвестный корневой CA |
502 Bad Gateway / 526 Invalid SSL Certificate | Сервер-прокси не смог установить TLS с бэкендом |
¶Устранение ошибок
Для владельцев сайтов:
- Проверить срок действия сертификата и вовремя продлевать его (сертификаты Let's Encrypt выдаются на 90 дней).
- Настроить полную цепочку сертификатов — в конфигурацию веб-сервера (nginx, Apache) должны входить и промежуточные сертификаты.
- Убедиться, что сертификат покрывает все нужные имена (SAN) и поддомены.
- Проверить корректность системного времени на сервере.
- Проверить настройки SNI и соответствие сертификата домену.
Для пользователей:
- Проверить системные дату и время.
- Обновить корневые сертификаты ОС и браузера.
- Отключить расширения и прокси, которые могут подменять сертификаты.
- При работе через корпоративную сеть обратиться к администратору — часто причиной является TLS-инспекция на шлюзе.
- Не отключать предупреждения о сертификатах без понимания причины — это скрывает реальные угрозы.
¶Значение
Ошибки TLS являются индикатором либо устаревшей инфраструктуры (просроченные сертификаты, старые протоколы), либо проблем конфигурации, либо активной атаки (подмена сертификата). Практически все современные браузеры блокируют соединения с ошибками сертификатов по умолчанию, что делает корректную настройку TLS обязательным условием нормальной работы сайта.
Источники:
- RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3
- RFC 5246 — The Transport Layer Security (TLS) Protocol Version 1.2
- Mozilla SSL Configuration Generator — рекомендации по настройке TLS
- Документация Let's Encrypt — управление сертификатами
- Справочник MDN Web Docs — ошибки TLS/SSL в браузерах
