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 перестанут работать
Поддержать проект