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 ручается за сертификат сайта.