HTTPS
HTTP передаёт данные открытым текстом — любой, кто «прослушивает» сеть между вами и сервером (провайдер, Wi-Fi точка доступа, VPN), может читать логины, пароли, содержимое запросов. HTTPS = HTTP поверх TLS-шифрования: всё что передаётся — зашифровано.
Как видит пользователь: замочек в адресной строке браузера и https:// вместо http://.
Как работает HTTPS (упрощённо):
- Браузер подключается к серверу, просит показать SSL-сертификат.
- Сертификат содержит публичный ключ сервера и подпись доверенного центра сертификации (CA, например Let’s Encrypt).
- Браузер проверяет подпись (т.е. «верит» CA, который уже в системе) — убеждается, что говорит с настоящим сайтом, а не с поддельным.
- Браузер и сервер согласовывают сессионный ключ (через асимметричную криптографию) — весь дальнейший трафик шифруется этим ключом.
Что защищает HTTPS:
- Шифрование данных в пути (нельзя прочитать пароли в Wi-Fi кафе)
- Проверка подлинности сервера (нельзя подменить сайт)
Что НЕ защищает: уже взломанный сервер, вредоносный код на странице (XSS).
Копнуть глубже
TLS handshake — как за 3–5 шагов устанавливается защищённое соединение. Упрощённо (TLS 1.3, один round-trip):
- клиент отправляет
ClientHelloс поддерживаемыми алгоритмами и своим открытым ключом (ephemeral key); - сервер отвечает
ServerHello+ сертификат + подпись; - клиент проверяет сертификат, из двух открытых ключей оба вычисляют общий секрет (ECDH);
- дальше используется симметричное шифрование (AES-GCM) этим общим ключом — оно быстрее асимметричного.
Цепочка доверия сертификатов. Let’s Encrypt подписывает ваш сертификат своим промежуточным сертификатом, который подписан корневым CA. Корневые CA (около 150 штук) вшиты в операционную систему и браузеры. Браузер проходит всю цепочку и проверяет каждую подпись. Если хоть одна не валидна — браузер блокирует соединение с предупреждением «Ваше соединение не защищено».
HSTS (HTTP Strict Transport Security) — HTTP-заголовок, который говорит браузеру: «всегда обращайся ко мне только через HTTPS, даже если набрали http://». Без HSTS первый запрос может уйти через HTTP (и быть перехвачен), а потом уже будет редирект на HTTPS. С HSTS браузер сам делает upgrade до HTTPS без этого первого небезопасного запроса.
В Spring Boot HTTPS настраивается через application.yml:
server:
ssl:
key-store: classpath:keystore.p12
key-store-password: ${SSL_PASSWORD}
key-store-type: PKCS12
port: 8443
На продакшене SSL обычно терминируется на уровне Nginx/балансировщика, а Spring работает по HTTP за ним (внутри сети).
• что такое SSL-сертификат и кто его подписывает (если дошёл до 2-го слоя).