Как работает протокол HTTPS?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
HTTPS — это расширение протокола HTTP с поддержкой шифрования данных и аутентификации сервера с использованием протоколов SSL/TLS.
Основные шаги установки безопасного соединения:
-
Клиентское приветствие (ClientHello): Клиент (браузер) отправляет на сервер сообщение, содержащее:
- Список поддерживаемых версий SSL/TLS.
- Список поддерживаемых наборов шифров (cipher suites), включающих алгоритмы шифрования, хеширования и обмена ключами.
- Случайное число (client random).
-
Серверное приветствие (ServerHello): Сервер отвечает клиенту, выбирая из предложенных:
- Версию SSL/TLS.
- Набор шифров.
- Случайное число (server random).
- Сертификат сервера.
-
Обмен сертификатами: Сервер отправляет клиенту свой цифровой сертификат, выданный удостоверяющим центром (Certificate Authority, CA). Сертификат содержит:
- Публичный ключ сервера.
- Доменное имя сервера.
- Срок действия сертификата.
- Цифровую подпись CA.
-
Проверка сертификата: Клиент проверяет сертификат сервера:
- Срок действия.
- Соответствие доменному имени сайта.
- Доверие CA (корневые сертификаты CA хранятся в браузере/ОС клиента).
- Цифровую подпись CA с помощью публичного ключа CA.
-
Генерация Pre-Master Secret: Клиент генерирует случайное число (Pre-Master Secret) и шифрует его публичным ключом сервера, полученным из сертификата.
-
Обмен зашифрованным Pre-Master Secret: Клиент отправляет зашифрованное Pre-Master Secret на сервер.
-
Дешифрование Pre-Master Secret: Сервер дешифрует полученное Pre-Master Secret с помощью своего приватного ключа.
-
Генерация Master Secret: И клиент, и сервер, используя Pre-Master Secret и свои случайные числа (client random и server random), генерируют идентичный Master Secret.
-
Генерация сеансовых ключей: На основе Master Secret генерируются симметричные сеансовые ключи, которые будут использоваться для шифрования и дешифрования данных во время сеанса (обычно по одному ключу для отправки и одному для приема у каждой стороны).
-
Смена шифра (Change Cipher Spec): Клиент и сервер уведомляют друг друга о переходе на использование сгенерированных сеансовых ключей для дальнейшей коммуникации.
-
Завершение рукопожатия (Finished): Клиент и сервер отправляют сообщения, зашифрованные с помощью новых сеансовых ключей и содержащие хеш предыдущих сообщений рукопожатия. Это позволяет убедиться, что рукопожатие прошло корректно и стороны владеют одинаковыми сеансовыми ключами.
После завершения рукопожатия весь последующий обмен данных между клиентом и сервером происходит в зашифрованном виде с использованием симметричных сеансовых ключей.
Сравнение HTTP и HTTPS:
| Параметр | HTTP | HTTPS |
|---|---|---|
| Безопасность | Данные передаются в открытом виде | Данные шифруются |
| Порт по умолчанию | 80 | 443 |
| Сертификат | Не требуется | Требуется SSL/TLS сертификат |
| Стоимость | Бесплатно | Требуется покупка или получение бесплатного сертификата |
| Производительность | Немного быстрее (нет шифрования) | Немного медленнее (требует шифрования) |
Использование HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию сервера, защищая от атак типа "человек посередине" (Man-in-the-Middle, MITM).