HTTPS и TLS: зачем шифрование

Разбираем, что добавляет буква S в HTTPS: шифрование, подлинность и целостность через TLS.

HTTPS — это обычный HTTP, обёрнутый в TLS (Transport Layer Security). TLS даёт шифрование, проверку подлинности сервера и защиту от подмены данных.

Зачем вообще шифровать

Без HTTPS трафик идёт открытым текстом. Любой на пути — владелец Wi-Fi в кафе, провайдер, взломанный роутер — может прочитать пароли и подменить страницу. TLS закрывает три задачи:

  • Конфиденциальность: данные зашифрованы, посторонний видит только «шум».
  • Подлинность: вы говорите именно с bank.com, а не с подставным сервером.
  • Целостность: данные не изменили по пути (подмена будет обнаружена).

TLS-рукопожатие наглядно

Перед обменом данными клиент и сервер проводят TLS-рукопожатие. Упрощённо:

1. Клиент -> Сервер: "Привет, вот версии TLS и шифры, что я поддерживаю" (ClientHello)
2. Сервер -> Клиент: "Выбрал шифр. Вот мой СЕРТИФИКАТ с публичным ключом" (ServerHello + Certificate)
3. Клиент проверяет сертификат (его подписал доверенный центр? имя совпадает? не истёк?)
4. Стороны согласуют общий сеансовый ключ (через асимметрию)
5. Дальше весь трафик шифруется этим общим ключом (симметрично)

Итог рукопожатия — общий секретный ключ, известный только клиенту и серверу, которым шифруется вся дальнейшая переписка. Как именно согласуют ключ, не выдав его, — тема следующего урока про симметрию и асимметрию.

Сертификаты и центры сертификации

Главный вопрос: откуда клиент знает, что сервер настоящий? Через сертификат — это «паспорт» сайта. В нём указано доменное имя, публичный ключ и подпись центра сертификации (CA, Certificate Authority) — доверенной организации (например, Let's Encrypt).

Браузер хранит список доверенных CA. Если сертификат сайта подписан одним из них, имя совпадает и срок не истёк — браузер показывает замочек. Если нет — грозное предупреждение «соединение не защищено».

Доверенный CA  --подписывает-->  Сертификат сайта  --предъявляет-->  Браузер проверяет подпись
(Let's Encrypt)                    (bank.com)                          (есть ли CA в списке доверенных?)

Цепочка доверия

Доверие выстроено цепочкой: корневой CA → промежуточный CA → сертификат сайта. Браузер доверяет корневым CA «из коробки», а они ручаются за нижестоящих. Это называют цепочкой доверия (chain of trust).

Зачем это веб-разработчику

Вы будете выпускать сертификаты (часто бесплатно через Let's Encrypt), настраивать их на сервере, ловить ошибки «certificate expired» и «name mismatch». Понимание, что замочек = проверенный сертификат от доверенного CA, помогает диагностировать проблемы и объяснять пользователям, почему HTTPS обязателен.

Итог

  • HTTPS = HTTP + TLS; TLS даёт конфиденциальность, подлинность и целостность.
  • TLS-рукопожатие согласует общий сеансовый ключ и проверяет сертификат сервера.
  • Сертификат — «паспорт» сайта, подписанный доверенным центром сертификации (CA).
  • Браузер доверяет по цепочке: корневой CA ручается за сертификат сайта.
Проверьте себя
1. Что добавляет TLS к обычному HTTP?
AТолько скорость
BНовые методы запросов
CСжатие заголовков
DШифрование, проверку подлинности сервера и целостность данных
2. Зачем серверу нужен сертификат в HTTPS?
AЧтобы доказать клиенту свою подлинность — что это действительно тот домен
BЧтобы ускорить загрузку
CЧтобы хранить cookies
DЧтобы выбрать порт
3. Что произойдёт, если сертификат сайта подписан неизвестным браузеру центром?
AСайт откроется как обычно
BБраузер покажет предупреждение о незащищённом соединении
CСоединение станет быстрее
DCookies перестанут работать