Ошибка TLS handshake и Reality в Happ: причины и решение
Что значат «tls: handshake failure», «certificate verify failed» и «REALITY: processed invalid connection» в логах Happ: неверный SNI или ключ, время, фильтрация в сети.
Подписка для Happ — 3 дня бесплатно, дальше от 189 ₽
Выберите срок и оформите подписку у сервиса Вятка: ссылка придёт на почту или в Telegram сразу и добавится в приложение одной кнопкой. Первые 3 дня — бесплатно, без карты.
- Ссылка-подписка приходит сразу после оплаты — обычно меньше минуты
- Одна ссылка на все устройства, где стоит Happ (до 3)
- Оплата по СБП, без автосписаний
- 3 дня бесплатно, карта не нужна
TLS handshake — рукопожатие: приложение и сервер договариваются о шифровании до того, как пойдут данные. Если в логе ошибка с tls, handshake или REALITY, значит до сервера вы дошли (иначе был бы timeout), но договориться не смогли. Причин немного, и их легко отличить по тексту.
Что означает каждая ошибка
| Строка в логе | По-человечески | Где искать |
|---|---|---|
tls: handshake failure | Сервер отверг предложенные параметры шифрования | Параметры в ссылке не совпадают с настройкой сервера, или сеть подменила соединение |
certificate verify failed / x509: certificate signed by unknown authority | Сертификат сервера не прошёл проверку | Сбитые дата и время, «защитный» софт с подменой сертификатов, устаревшая ссылка |
REALITY: processed invalid connection | Сервер с Reality не узнал клиента и отдал ему «чужой» сайт | Неверный публичный ключ (pbk), sni или sid в ссылке; часто — устаревшая подписка |
tls: unexpected message / EOF во время handshake | Соединение оборвано посреди рукопожатия | Фильтрация в сети: оборудование оператора рвёт TLS с «подозрительным» SNI |
Reality — способ спрятать соединение под обычный HTTPS к известному сайту; для этого ссылка несёт публичный ключ сервера и имя сайта-прикрытия (SNI). Если хоть один параметр не совпадает, сервер честно ведёт себя как чужой сайт — отсюда «invalid connection». Что вообще внутри ссылки: ссылка-подписка.
Решение по шагам
- Обновите подписку. Сервис перевыпустил ключи или сменил SNI — у вас старые параметры. Это главная причина ошибок Reality: ссылка живая, а содержимое устарело.
- Проверьте время на устройстве. Настройки → дата и время → «автоматически». Расхождение в несколько минут ломает проверку сертификатов; после смены часового пояса или замены батарейки в ПК это классика.
- Переключите сервер. Если ошибка на одном сервере, а другие подключаются — проблема в этом сервере, пользуйтесь остальными.
- Отключите «проверку HTTPS» в антивирусе или корпоративном фильтре: они подменяют сертификаты, и ядро правильно отказывается доверять подделке.
- Смените сеть. Ошибка только в одной сети — фильтрация оператора; сервер и приложение здесь ни при чём.
Подписка для Happ, которая просто работает
Ссылка-подписка от Вятка: добавляется в Happ одной кнопкой, работает на телефоне, компьютере и телевизоре, продлевается когда захотите.
- без карты
- все устройства по одной ссылке
- отмена не нужна — просто не продлевайте
Если вы правили ссылку руками
Любая опечатка в параметрах pbk, sni, sid, fp даёт ровно эти ошибки. Скопируйте ссылку из кабинета сервиса заново целиком, не редактируя, — и добавьте как подписку, а не как одиночный сервер: тогда параметры будут обновляться сами.
Отдельный случай — параметр allowInsecure / «пропускать проверку сертификата». Включать его в ответ на certificate verify failed — плохая идея: вы гасите симптом, а не причину, и рискуете отдать трафик тому, кто подменил сертификат. Сначала время, потом подписка, потом сеть.
Почему это работает у одних и не работает у других
Оборудование операторов по-разному относится к TLS с «неизвестным» SNI: одно пропускает, другое рвёт рукопожатие через долю секунды. Поэтому одна и та же ссылка на домашнем Wi-Fi работает, а в мобильной сети даёт EOF. Сервисы, которые за этим следят, подбирают SNI и адреса под конкретных операторов — и обновление подписки приносит вам уже подобранные параметры. Если не помогает ничего — идите по общему списку шести проверок.
Что такое SNI в ссылке?
Имя сайта, которым соединение «представляется» сети. В Reality оно должно совпадать с тем, что настроено на сервере, иначе сервер не примет клиента.
Можно ли просто выключить проверку сертификата?
Технически да, но это маскирует проблему и снижает защиту. Для Reality это вообще не работает: там проверяется ключ, а не сертификат.
Ошибка появилась после обновления Happ
Новая версия ядра может строже проверять параметры. Обновите подписку — сервис обычно уже выдал ссылку в актуальном формате; если нет, временно поставьте другой клиент с той же ссылкой.
Осталось проверить на практике: подписка для Happ на 3 дня бесплатно, без карты. Ссылка приходит сразу и добавляется в приложение одной кнопкой.
Получить подписку →