Перейти к содержимому
Skip to content
← Все статьи

TLS-рукопожатие: пошаговое руководство по установке защищенного соединения

Что такое TLS-рукопожатие?

TLS-рукопожатие (TLS handshake) — это процесс, в ходе которого клиент и сервер устанавливают зашифрованное соединение. Каждый раз при посещении SSL/TLS проверку-сайта происходит TLS-рукопожатие до передачи любых данных приложения. Понимание этого процесса необходимо для диагностики проблем соединения, оптимизации производительности и настройки безопасных серверов.

TLS 1.2: пошаговый разбор

Рукопожатие TLS 1.2 требует двух циклов обмена данными между клиентом и сервером до начала передачи зашифрованных данных.

Первый цикл: приветствие и обмен ключами

  1. ClientHello: клиент отправляет поддерживаемые шифронаборы, версию TLS, случайное число и расширения (например, SNI — Server Name Indication).
  2. ServerHello: сервер выбирает шифронабор, отправляет свое случайное число и цифровой сертификат с открытым ключом.
  3. Проверка сертификата: клиент проверяет сертификат сервера по доверенным удостоверяющим центрам (CA), срок действия, статус отзыва и соответствие домену.
  4. Обмен ключами: с помощью выбранного алгоритма (RSA или Diffie-Hellman) обе стороны вычисляют предварительный секрет (pre-master secret).

Второй цикл: завершение рукопожатия

  1. Client Finished: клиент отправляет сообщение ChangeCipherSpec и зашифрованное сообщение Finished с использованием производных сеансовых ключей.
  2. Server Finished: сервер отправляет свои ChangeCipherSpec и Finished.
  3. Безопасный канал установлен: данные приложения могут передаваться в зашифрованном виде.
Клиент                           Сервер
  |--- ClientHello ------------------>|
  |<-- ServerHello, Certificate ------|
  |<-- ServerKeyExchange, Done -------|
  |--- ClientKeyExchange ------------>|
  |--- ChangeCipherSpec, Finished --->|
  |<-- ChangeCipherSpec, Finished ----|
  |=== Зашифрованные данные =========|

TLS 1.3: ускоренное рукопожатие

TLS 1.3, утвержденный в 2018 году (RFC 8446), значительно упрощает и ускоряет процесс рукопожатия. Главное улучшение — сокращение с двух циклов до одного.

Ключевые улучшения TLS 1.3

Клиент                           Сервер
  |--- ClientHello + KeyShare ------->|
  |<-- ServerHello + KeyShare --------|
  |<-- {EncryptedExtensions} ---------|
  |<-- {Certificate, Finished} -------|
  |--- {Finished} ------------------->|
  |=== Зашифрованные данные =========|

Сравнение TLS 1.2 и TLS 1.3

ХарактеристикаTLS 1.2TLS 1.3
Циклы рукопожатия2 RTT1 RTT (0-RTT для возобновления)
Прямая секретностьОпциональноОбязательно
Шифронаборы37+ (многие небезопасны)5 (все безопасны)
Шифрование сертификатаОткрытый текстЗашифровано
Обмен ключами RSAПоддерживаетсяУдален
0-RTT возобновлениеНедоступноПоддерживается

Влияние на производительность

Разница в производительности между TLS 1.2 и 1.3 существенна, особенно на каналах с высокой задержкой:

Оптимизация TLS-конфигурации

# Рекомендуемая конфигурация nginx для TLS
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;

Частые ошибки рукопожатия

Заключение

TLS-рукопожатие — основа безопасной веб-коммуникации. Переход на TLS 1.3 обеспечивает и более сильную защиту, и лучшую производительность. Приоритизируйте поддержку TLS 1.3, обеспечьте правильное управление сертификатами и регулярно проводите аудит конфигурации TLS.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: SSL/TLS
SSL/TLS
Wildcard SSL-сертификаты: когда и как использовать
16.03.2026 · 14 просм.
SSL/TLS
Мониторинг SSL-сертификатов: избегаем простоев
14.03.2026 · 10 просм.
SSL/TLS
SSL/TLS сертификаты: как работает HTTPS
10.03.2025 · 25 просм.
SSL/TLS
SSL Pinning: что это и когда использовать
16.03.2026 · 23 просм.