1. Что такое SSL/TLS и зачем нужен сертификат?
SSL (Secure Sockets Layer) и его современная версия TLS (Transport Layer Security) это технологии, которые шифруют данные между вашим браузером и сайтом. Если возникает ошибка TLS, значит, на этапе установки безопасного соединения что-то пошло не так.
Эти технологии обеспечивают три важные вещи:
- Конфиденциальность никто не может подслушать, что вы передаёте (пароли, сообщения, данные карт).
- Целостность данные не могут быть изменены по пути.
- Подлинность вы точно общаетесь с нужным сайтом, а не с мошенником.
Для работы TLS используется цифровой сертификат. Его можно представить как электронный паспорт сайта. Сертификат выдаёт особая организация —Удостоверяющий центр (Certificate Authority, CA), например, Let’s Encrypt, DigiCert, GlobalSign.
Когда вы заходите на сайт по HTTPS, браузер проверяет сертификат по нескольким параметрам. Если что-то не так возникает ошибка TLS.
2. Самые частые ошибки SSL/TLS (включая ошибку TLS)
Ниже перечислены типичные сообщения об ошибках, которые вы можете увидеть в браузере. Многие из них являются вариантами ошибки TLS.
2.1. Истёк срок действия сертификата
Сообщения:
- Chrome:
NET::ERR_CERT_DATE_INVALID - Firefox:
Сертификат просрочен
Причины:
- Владелец сайта забыл продлить сертификат.
- Сбито системное время на вашем компьютере или сервере.
Как исправить: Проверьте дату и время на устройстве. Если время правильное — проблема на стороне сайта.
2.2. Недоверенный издатель / неполная цепочка
Сообщения:
- Chrome:
NET::ERR_CERT_AUTHORITY_INVALID - Firefox:
SEC_ERROR_UNKNOWN_ISSUER
Причина: Сервер не передал промежуточный сертификат, и браузер не может построить «цепочку доверия».
Как исправить (владельцу сайта): Установите на сервер полную цепочку сертификатов (сайт + промежуточные).
2.3. Доменное имя не совпадает с сертификатом
Сообщение: NET::ERR_CERT_COMMON_NAME_INVALID
Причина: Сертификат выдан для одного домена, а вы зашли на другой.
Как исправить: Проверьте правильность адреса в строке браузера.
2.4. Аннулированный сертификат
Сообщение: ERR_CERT_REVOKED
Причина: Сертификат отозван до истечения срока (например, ключ украден).
Что делать: Не заходите на такой сайт.
2.5. Ошибка TLS handshake (OpenVPN)
Это особая ошибка TLS, возникающая при работе VPN. Подробно разберём в разделе 8.
3. Диагностика проблем с помощью OpenSSL (для продвинутых новичков)
Если вы управляете сайтом или просто хотите разобраться глубже, лучшее средство диагностики любой ошибки TLS — консольная программа openssl. Она есть на Linux, macOS и (через WSL) на Windows.
3.1. Базовая проверка с учётом SNI
SNI (Server Name Indication) — это расширение, позволяющее серверу выбрать правильный сертификат. Без SNI вы можете получить ложную ошибку TLS.
Правильная команда:
bash
openssl s_client -connect example.com:443 -servername example.com -showcerts
На что смотреть:
-
Verify return code: 0 (ok)всё хорошо. -
unable to get local issuer certificateпроблема с цепочкой. -
certificate has expiredсертификат просрочен.
3.2. Сравнение с SNI и без SNI
bash
# Без SNI
openssl s_client -connect example.com:443 -showcerts
# С SNI
openssl s_client -connect example.com:443 -servername example.com -showcerts
Если сертификаты отличаются ошибка TLS вызвана неправильной настройкой виртуальных хостов.
4. Проблемы с цепочкой сертификатов (intermediate)
Это одна из самых частых причин ошибки TLS у начинающих администраторов. Браузер ругается «недоверенный издатель», потому что сервер не отдаёт промежуточный сертификат.
Как собрать правильную цепочку:
- Удостоверяющий центр даёт файл с цепочкой (обычно
ca-bundle.crt). - В конфигурации веб-сервера нужно указать полный файл, где сначала идёт сертификат сайта, затем промежуточные.
- Для Nginx:
ssl_certificate /path/to/fullchain.pem - Для Apache:
SSLCertificateFile+SSLCertificateChainFile
Проверка:
bash
openssl s_client -connect example.com:443 -servername example.com -showcerts | grep -A 25 "Certificate chain"
Если видите только один сертификат цепочка неполная.
5. Ошибки из-за системного времени
Бывает, что сертификат новый, цепочка правильная, но браузер всё равно выдаёт ошибку TLS с сообщением «истёк срок». Виновник — сбитое время.
На компьютере пользователя:
- Включите автоматическую синхронизацию времени (NTP).
На сервере (администратору):
bash
sudo timedatectl set-ntp true sudo systemctl restart systemd-timesyncd date
6. SNI: почему сайты на одном IP-адресе путаются
Раньше на одном IP можно было разместить только один HTTPS-сайт. SNI решил эту проблему. Ошибка TLS из-за SNI возникает, если:
- Вы используете очень старый браузер (не поддерживает SNI). Решение: обновите браузер.
- На сервере неправильно настроены виртуальные хосты.
Диагностика:
bash
openssl s_client -connect IP_адрес:443 -servername ваш_домен
7. HSTS: когда браузер «запоминает» ошибку
HSTS (HTTP Strict Transport Security) заставляет браузер всегда подключаться по HTTPS и не разрешает обходить предупреждения. Если сайт однажды выдал ошибку TLS, а потом вы её исправили, браузер может продолжать ругаться из-за кэшированного HSTS.
Как очистить HSTS в Chrome:
- Перейдите на
chrome://net-internals/#hsts. - В разделе «Delete domain security policies» введите домен и нажмите Delete.
Проверка HSTS:
bash
curl -I https://example.com | grep -i "strict-transport"
8. Специфический случай: OpenVPN и ошибка TLS handshake
При использовании OpenVPN вы можете столкнуться с сообщениями:
TLS Error: TLS key negotiation failed to occur within 60 seconds
TLS Error: TLS handshake failed
Это классическая ошибка TLS в контексте VPN.
Причины:
- Интернет-провайдер блокирует UDP-пакеты.
- Проблемы с NAT.
- Высокая задержка (ping).
Решения:
- Смените порт на 443 (обычно не блокируется).
-
Смените протокол с UDP на TCP. В конфигах
server.confиclient.confзамените:textproto tcp port 443 - Перезапустите OpenVPN.
9. Исчерпывающий чек-лист: что делать при ошибке TLS
Если вы обычный пользователь:
- Проверьте дату и время на компьютере.
- Обновите браузер.
- Попробуйте открыть сайт в другом браузере.
- Проверьте правильность написания домена.
- Если ошибка на многих сайтах — возможно, антивирус или прокси подменяют сертификаты. Временно отключите их.
Если вы владелец сайта:
- Проверьте срок действия сертификата:
openssl s_client -connect ваш_домен:443 -servername ваш_домен 2>/dev/null | openssl x509 -noout -dates - Проверьте цепочку сертификатов (должно быть 2–3 сертификата в выводе
-showcerts). - Проверьте SNI: сравните вывод с
-servernameи без него. - Проверьте системное время на сервере, настройте NTP.
- Перезагрузите веб-сервер:
sudo systemctl reload nginx(или apache2). - Проверьте сайт через SSL Labs: https://www.ssllabs.com/ssltest/
- Настройте мониторинг сертификатов.
10. Заключение
Ошибка TLS пугает своим видом, но почти всегда она объясняется одной из пяти простых причин: истекший сертификат, неполная цепочка, несовпадение имени, проблемы со временем или неправильный SNI. Теперь вы знаете, как каждую из них распознать и исправить. Главный инструмент администратора openssl s_client, а для обычного пользователя здравый смысл и проверка времени.
Помните: безопасность важна. Если браузер предупреждает об ошибке TLS, не игнорируйте это без необходимости. Но если вы точно знаете, что делаете (например, настраиваете свой собственный сервер), следуйте нашему чек-листу, и ваши сайты будут работать надёжно и защищённо.







