HTTPS и TLS: шифрование и доверие
Зачем:Вы поймёте, что значит замочек в адресной строке и почему без него браузеры пугают посетителей. После урока вы можете объяснить рукопожатие TLS, роль сертификата и удостоверяющего центра.
20 минут
Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.
HTTPS — HTTP внутри канала TLS, который шифрует данные, защищает их от подмены и проверяет сервер по сертификату удостоверяющего центра.
Открытка и запечатанное письмо
Обычный HTTP похож на открытку: по дороге её читает каждый, кто к ней прикоснулся. Это владелец Wi-Fi в кафе, провайдер, любая промежуточная станция. Пока на сайте читают новости, это терпимо. Но стоит появиться форме с телефоном или паролем, и открытка становится опасной. К тому же тот, кто сидит на пути, может не только читать, но и менять: вставить рекламу в чужую страницу, подсунуть вирус в скачиваемый файл.
HTTPS это тот же HTTP, но внутри защищённого канала, который строит протокол TLS (Transport Layer Security; прежнее название SSL до сих пор встречается в разговорах). Он даёт три вещи:
- Шифрование: подслушивающий видит шум.
- Целостность: если кто-то изменит данные в пути, это обнаружится.
- Проверку сервера: вы говорите именно с владельцем домена, а не с подделкой.
Поэтому браузеры помечают HTTP-сайты как «Не защищено», а ряд возможностей (определение местоположения, камера, офлайн-режим) вообще разрешают только на HTTPS. Поисковики тоже считают HTTPS плюсом.
Проверьте себя: что даёт HTTPS, кроме шифрования?
Целостность (изменение данных в пути не пройдёт незамеченным) и проверку сервера (вы говорите с владельцем домена).
Как договориться о секрете при всех
Здесь есть парадокс. Чтобы зашифровать разговор, обеим сторонам нужен общий секретный ключ. Но как договориться о нём, если разговор слушают? Ответ придумали математики в 1970-х, и его удобно объяснить красками.
Пусть у нас есть банка жёлтой краски, которую знают все. Вы тайно выбираете свою краску и смешиваете её с жёлтой, сервер делает то же самое со своей. Вы обмениваетесь получившимися смесями открыто. Теперь каждый добавляет в чужую смесь свою тайную краску, и у обоих получается один и тот же цвет. А подслушивающий видит жёлтую банку и две смеси. Вычесть краску из смеси он не может.
В настоящем протоколе вместо красок числа, но принцип тот же. Из общего секрета обе стороны получают ключи и дальше шифруют данные быстрым шифром.
Рукопожатие TLS
Весь обмен укладывается в несколько сообщений. Нажимайте «Следующий шаг» и смотрите, что видит подслушивающий. Включите режим «Сертификат на чужое имя» и посмотрите, что произойдёт на проверке.
1. Браузер → сервер
ClientHello: «Хочу говорить с www.example.ru. Умею такие шифры. Вот моя половина общего секрета.»
Подслушивающий: видно: что браузер зашёл на www.example.ru, и список шифров. Содержимое страниц ещё не передано.
Пока ничего: данные ещё не отправлены.
Главное, что вы увидите на схеме: после второго шага всё шифруется, поэтому сертификат и сами данные подслушивающему уже не видны. Всё рукопожатие занимает один круг «туда и обратно» (в старых версиях TLS было два), и поверх него идёт тот самый запрос HTTP.
Проверьте себя: что видит подслушивающий, когда данные уже идут по HTTPS?
Шум: набор байтов, из которого без ключа ничего не прочитать. Видно только, к какому серверу идёт соединение.
Сертификат
Шифрование не отвечает на вопрос «а с тем ли я говорю». Для этого есть сертификат: электронный документ, как удостоверение личности сайта. В нём записано:
- имя (или имена), для которых он выдан;
- открытый ключ сайта (у каждого сайта есть пара «открытый и секретный ключ»);
- срок действия;
- подпись того, кто его выдал.
Выдаёт сертификаты удостоверяющий центр (УЦ, по-английски CA). В каждом браузере и системе есть список центров, которым доверяют. Сертификат считается настоящим, если он подписан таким центром, прямо или по цепочке («корневой центр подписал промежуточный, а тот подписал сертификат сайта»). Браузер проверяет четыре вещи: подпись, имя, срок и то, что сертификат не отозван. Все выданные сертификаты ещё и записываются в открытые журналы, и по ним любой может увидеть, кто и для какого имени получил сертификат.
Что подтверждает сертификат: что вы говорите с тем, кто управляет доменом. Что он не подтверждает: что владелец домена честен. Сертификат на домен мошеннического сайта получить так же просто, как на ваш: центр проверяет только контроль над доменом. Поэтому замочек в адресной строке означает «канал защищён», а не «сайт безопасен». Эту разницу полезно знать, и мы вернёмся к ней в частях про безопасность и право.
Проверьте себя: что подтверждает сертификат, а что нет?
Подтверждает, что вы говорите с владельцем домена. Не подтверждает, что этот владелец честный и что сайт безопасен.
Как получить сертификат
Раньше сертификаты стоили денег и заказывались вручную. Сегодня есть бесплатный путь. Центр Let’s Encrypt выдаёт сертификаты автоматически: специальная программа на сервере доказывает центру, что контролирует домен (кладёт особый файл на сайт или особую запись TXT в DNS, о которой вы знаете из урока про DNS), получает сертификат и продлевает его.
Есть три способа:
- Хостинг сделает всё сам. В панели большинства хостингов сертификат включается одной кнопкой. Для начинающего это лучший путь.
- Автоматически на своём сервере: через программу вроде Certbot.
- Платный сертификат у центра: нужен в особых случаях, чаще корпорациям.
Срок действия сертификата ограничен, и его постепенно сокращают, чтобы похищенный сертификат был опасен недолго. Сегодня у Let’s Encrypt это 90 дней. Центр объявил, что с 10 февраля 2027 года по умолчанию будет 64 дня, а с 16 февраля 2028 года 45 дней. Чем короче срок, тем важнее, чтобы продление было автоматическим: вручную в такой ритм не уложиться.
Ещё две вещи, которые стоит знать. Страницу и всё, что в ней (картинки, скрипты), нужно отдавать по HTTPS: одна картинка по HTTP делает защиту неполной, браузер ругается на «смешанное содержимое». И нужно перенаправлять старые адреса http:// на https:// кодом 301, как в уроке про HTTP.
Практика
Вы в эпохе 2010 года, сайт начинает принимать данные. Под заголовком форма заявки. В ней две ошибки: она отправляет данные по http, а поля не подписаны, и программа чтения с экрана не скажет человеку, что вводить в каждом поле. Исправьте обе. Потом допишите заметку о сертификате: как вы его получите и на сколько дней.
Кнопка формы подписана вашим главным действием из брифа: ради него посетитель и оставляет данные.
Что было не так с 2010 годом
HTTPS тогда использовали банки и магазины, а остальные считали его излишним и дорогим. В 2013 году стало известно о массовой слежке за трафиком, а в 2015–2016 годах Let’s Encrypt сделал сертификаты бесплатными и автоматическими. Сегодня сайт без HTTPS считается неисправным, и браузеры сами предупреждают об этом.
Практика
Готовлю вашу страницу…
Тест
Вопрос 1 из 6
Карточки
Эти карточки попадут в повторение, когда вы завершите урок.
Что даёт HTTPS?
Ответ
HTTP внутри TLS: шифрование (подслушать нельзя), целостность (подменить незаметно нельзя) и проверку сервера (это владелец домена).
Как устроено рукопожатие TLS?
Ответ
Браузер и сервер обмениваются «половинками» секрета и вычисляют общий ключ, сервер присылает сертификат, браузер его проверяет. Дальше данные шифруются общим ключом.
Что в сертификате сайта?
Ответ
Имя сайта, его открытый ключ, срок действия и подпись удостоверяющего центра.
Кому браузер доверяет сертификаты?
Ответ
Удостоверяющим центрам из своего списка (или списка системы). Сертификат должен быть подписан центром из списка, прямо или по цепочке.
Что на самом деле означает замочек?
Ответ
Канал защищён, и вы говорите с владельцем домена. Что владелец честный, замочек не гарантирует.
Источники
- Transport Layer Security (MDN) CC BY-SA, по-английски
- The Illustrated TLS 1.3 Connection только ссылка, по-английски
- How It Works (Let’s Encrypt) только ссылка, по-английски
- Why HTTPS matters (web.dev) CC BY, по-английски
- HTTPS (Википедия) CC BY-SA, по-русски
Видео
HTTP или HTTPS: как работает и в чём разница (Merion Academy)
Видео загрузится с youtube-nocookie.com только после нажатия.
Дальше
Теперь вы знаете: HTTPS и TLS, сертификаты и доверие.