Как на самом деле работают HTTPS и TLS: пошаговое руководство

Security2026-10-23TryQuickToolBox

Вы наверняка видели значок замка в браузере и предполагали, что соединение защищено. Но что на самом деле происходит, когда вы заходите на сайт с HTTPS? Как браузер узнаёт, что общается с настоящим сервером, а не с самозванцем? И почему TLS иногда замедляет ваш сайт?

В этом руководстве мы развеем мифы о HTTPS и TLS, пошагово разобрав рукопожатие. Вы узнаете о роли сертификатов, симметричного и асимметричного шифрования, а также о том, как проверять и оптимизировать TLS в своих проектах.

Что на самом деле делают HTTPS и TLS

HTTPS — это HTTP, работающий поверх TLS (Transport Layer Security). TLS обеспечивает три гарантии:

Без TLS трафик HTTP передаётся в открытом виде. Любой на пути (точки Wi-Fi, провайдеры, скомпрометированные роутеры) может его прочитать или изменить. TLS решает эту проблему, устанавливая защищённый канал до обмена любыми HTTP-данными.

TLS-рукопожатие: шаг за шагом

Рукопожатие — это место, где происходит магия. Это переговоры, которые устанавливают общие ключи и проверяют идентичность. Вот упрощённый поток для TLS 1.2 и 1.3 (две версии, с которыми вы столкнётесь сегодня).

Шаг 1: Client Hello

Клиент (браузер) отправляет сообщение ClientHello, содержащее:

Шаг 2: Server Hello и сертификат

Сервер отвечает сообщением ServerHello (выбранная версия, набор шифров, server random) и своим сертификатом. Сертификат содержит открытый ключ сервера и подписан удостоверяющим центром (CA).

Клиент проверяет сертификат: не истёк ли срок действия? Выдан ли он доверенным CA? Совпадает ли домен? Если нет, браузер показывает предупреждение.

Шаг 3: Обмен ключами

Используя открытый ключ сервера (или параметры Диффи-Хеллмана), клиент и сервер выводят общий pre-master secret. В TLS 1.3 это делается с помощью эфемерного Диффи-Хеллмана (ECDHE), обеспечивая прямую секретность: даже если закрытый ключ сервера позже будет скомпрометирован, прошлые сеансы останутся защищёнными.

Шаг 4: Finished

Обе стороны отправляют сообщение Finished, зашифрованное новыми производными ключами. Если расшифровка успешна, рукопожатие завершено. С этого момента все данные приложения (HTTP) шифруются симметричным шифрованием (например, AES-GCM или ChaCha20-Poly1305).

Улучшения в TLS 1.3

TLS 1.3 сокращает рукопожатие до одного кругового обхода (1-RTT) и поддерживает возобновление 0-RTT для повторных посетителей. Он также удаляет устаревшие алгоритмы, делая его быстрее и безопаснее. Большинство современных браузеров и серверов поддерживают TLS 1.3.

Симметричное и асимметричное шифрование в TLS

TLS использует оба типа шифрования по уважительной причине:

Этот гибридный подход даёт вам безопасность криптографии с открытым ключом и производительность симметричных шифров.

Сертификаты: якоря доверия

Сертификат связывает открытый ключ с доменным именем и подписан CA. Браузеры и операционные системы поставляются с хранилищем доверенных корневых CA. Когда сервер представляет свой сертификат, клиент строит цепочку доверия к доверенному корню.

Сертификаты имеют ограниченный срок действия (сейчас часто 90 дней с Let's Encrypt). Просроченные сертификаты вызывают ошибки в браузере, поэтому автоматизируйте продление.

Практика: проверка TLS с помощью OpenSSL

Вы можете проверить конфигурацию TLS сервера с помощью утилиты командной строки openssl. Это помогает отлаживать сбои рукопожатия или проверять наборы шифров.

openssl s_client -connect example.com:443 -servername example.com -tls1_3

Эта команда подключается к серверу и выводит цепочку сертификатов, согласованный шифр и сведения о сеансе. Ищите Verify return code: 0 (ok), чтобы убедиться, что сертификат действителен.

Чтобы проверить срок действия сертификата:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

Распространённые ошибки TLS и как их избежать

Оптимизация производительности TLS

TLS добавляет задержку из-за рукопожатия. Вот как её минимизировать:

Часто задаваемые вопросы

В чём разница между HTTPS и TLS?

HTTPS — это защищённая версия HTTP, а TLS — криптографический протокол, обеспечивающий безопасность. HTTPS использует TLS для шифрования и аутентификации соединения.

Как TLS обеспечивает прямую секретность?

Прямая секретность гарантирует, что даже если закрытый ключ сервера скомпрометирован, прошлые сеансовые ключи не могут быть восстановлены. Это достигается использованием эфемерного обмена ключами Диффи-Хеллмана (ECDHE) в TLS 1.3 и современных конфигурациях TLS 1.2.

Почему я вижу ошибки сертификатов на некоторых сайтах?

Ошибки сертификатов обычно означают, что сертификат просрочен, самоподписан, выдан для другого домена или цепочка сертификатов неполна. Браузеры отклоняют такие сертификаты, чтобы защитить вас от атак «человек посередине».

Когда вам нужно проверить или отладить TLS-соединения, инструменты вроде Timestamp Converter помогут расшифровать сроки действия сертификатов и отладить проблемы, связанные со временем.