От HTTP к HTTPS
Когда вы открываете сайт по адресу https://, браузер и сервер не сразу начинают обмениваться данными. Сначала они проводят «TLS-рукопожатие» (TLS Handshake) — процесс согласования параметров шифрования и проверки подлинности сервера. Всё это происходит за миллисекунды до загрузки первого байта страницы.
Шаги TLS-рукопожатия (TLS 1.3)
- ClientHello — браузер отправляет: поддерживаемые версии TLS, список шифровальных наборов (cipher suites), случайное число.
- ServerHello — сервер отвечает: выбранная версия TLS, выбранный cipher suite, случайное число сервера, сертификат сервера.
- Проверка сертификата — браузер проверяет: подписан ли сертификат доверенным центром сертификации (CA), не истёк ли срок, совпадает ли домен.
- Обмен ключами — браузер и сервер вычисляют общий сессионный ключ, не передавая его напрямую (алгоритм Диффи-Хеллмана).
- Готово — шифрованный канал установлен. Все последующие данные шифруются сессионным ключом.
Что такое сессионный ключ?
После рукопожатия браузер и сервер используют симметричное шифрование (AES-256) с уникальным ключом для каждой сессии. Этот ключ вычисляется на обоих концах независимо через алгоритм ECDHE — никто по пути не может его перехватить, даже если видит весь трафик.
Цепочка доверия SSL
SSL-сертификат подписан центром сертификации (CA). Но браузер доверяет только небольшому списку корневых CA (Root CA). Как связать ваш сертификат с Root CA?
Ответ: через промежуточные сертификаты (Intermediate CA):
Root CA (Let's Encrypt Root X1)
└── Intermediate CA (R3)
└── Ваш сертификат (example.com)
Браузер идёт по цепочке вверх, пока не найдёт Root CA из своего доверенного хранилища. Если цепочка прервана (например, промежуточный сертификат не настроен на сервере), браузер покажет ошибку.
Версии TLS: что поддерживать
- TLS 1.3 (2018) — текущий стандарт. Быстрее и безопаснее. Поддерживается всеми современными браузерами.
- TLS 1.2 — старый стандарт, всё ещё нужен для совместимости со старыми клиентами.
- TLS 1.0 / 1.1 — устаревшие, небезопасные. Должны быть отключены.
- SSL 2.0 / 3.0 — критически устаревшие. Содержат уязвимости POODLE, DROWN. Должны быть отключены.
Частые ошибки SSL в браузере
- ERR_CERT_DATE_INVALID — сертификат истёк или ещё не действителен.
- ERR_CERT_AUTHORITY_INVALID — сертификат подписан неизвестным CA или цепочка доверия прервана.
- ERR_CERT_COMMON_NAME_INVALID — домен не совпадает с указанным в сертификате.
- ERR_SSL_VERSION_OR_CIPHER_MISMATCH — браузер и сервер не имеют общих поддерживаемых версий TLS.
Проверить SSL-сертификат онлайн
Инструмент SSL Check на kit.uz проверяет:
- Срок действия сертификата
- Имя и организацию издателя
- Поддерживаемые версии TLS
- Цепочку доверия
- Subject Alternative Names (список доменов в сертификате)