Короткий ответ
HTTPS (HTTP поверх TLS) шифрует трафик между клиентом и сервером и подтверждает подлинность сервера через сертификат, защищая от перехвата и подмены данных (man-in-the-middle), включая пароли, токены и cookie, которые при обычном HTTP передаются открытым текстом.
Как это работает подробнее
При установке соединения TLS стороны согласуют алгоритмы шифрования и обмениваются ключами с проверкой сертификата сервера через цепочку доверия (CA), после чего весь последующий трафик шифруется симметричным ключом сессии.
Пример кода
config.yaml
# nginx (упрощённо)
server:
listen: 80
return: 301 https://$host$request_uri
---
server:
listen: 443 ssl
add_header: "Strict-Transport-Security: max-age=63072000; includeSubDomains"Что использовать на практике
- Практика. Даже во «внутренней» сети компании устройства могут быть скомпрометированы, а трафик может проходить через промежуточные прокси или общую облачную инфраструктуру, поэтому TLS применяют и для внутренних сервисов (mTLS между микросервисами); для внешнего API HTTPS обязателен без исключений.
Подводные камни
- Риск. Считают, что HTTPS нужен только для публичных сайтов с формами оплаты; оставляют редирект с HTTP на HTTPS единственной защитой, забывая заголовок HSTS, который запрещает браузеру вообще обращаться по HTTP повторно.