HTTPS и TLS: шифрование и доверие

Зачем:Вы поймёте, что значит замочек в адресной строке и почему без него браузеры пугают посетителей. После урока вы можете объяснить рукопожатие TLS, роль сертификата и удостоверяющего центра.

20 минут

Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.

HTTPS — HTTP внутри канала TLS, который шифрует данные, защищает их от подмены и проверяет сервер по сертификату удостоверяющего центра.

Открытка и запечатанное письмо

Обычный HTTP похож на открытку: по дороге её читает каждый, кто к ней прикоснулся. Это владелец Wi-Fi в кафе, провайдер, любая промежуточная станция. Пока на сайте читают новости, это терпимо. Но стоит появиться форме с телефоном или паролем, и открытка становится опасной. К тому же тот, кто сидит на пути, может не только читать, но и менять: вставить рекламу в чужую страницу, подсунуть вирус в скачиваемый файл.

HTTPS это тот же HTTP, но внутри защищённого канала, который строит протокол TLS (Transport Layer Security; прежнее название SSL до сих пор встречается в разговорах). Он даёт три вещи:

  1. Шифрование: подслушивающий видит шум.
  2. Целостность: если кто-то изменит данные в пути, это обнаружится.
  3. Проверку сервера: вы говорите именно с владельцем домена, а не с подделкой.

Поэтому браузеры помечают HTTP-сайты как «Не защищено», а ряд возможностей (определение местоположения, камера, офлайн-режим) вообще разрешают только на HTTPS. Поисковики тоже считают HTTPS плюсом.

Проверьте себя: что даёт HTTPS, кроме шифрования?

Целостность (изменение данных в пути не пройдёт незамеченным) и проверку сервера (вы говорите с владельцем домена).

Как договориться о секрете при всех

Здесь есть парадокс. Чтобы зашифровать разговор, обеим сторонам нужен общий секретный ключ. Но как договориться о нём, если разговор слушают? Ответ придумали математики в 1970-х, и его удобно объяснить красками.

Пусть у нас есть банка жёлтой краски, которую знают все. Вы тайно выбираете свою краску и смешиваете её с жёлтой, сервер делает то же самое со своей. Вы обмениваетесь получившимися смесями открыто. Теперь каждый добавляет в чужую смесь свою тайную краску, и у обоих получается один и тот же цвет. А подслушивающий видит жёлтую банку и две смеси. Вычесть краску из смеси он не может.

В настоящем протоколе вместо красок числа, но принцип тот же. Из общего секрета обе стороны получают ключи и дальше шифруют данные быстрым шифром.

Рукопожатие TLS

Весь обмен укладывается в несколько сообщений. Нажимайте «Следующий шаг» и смотрите, что видит подслушивающий. Включите режим «Сертификат на чужое имя» и посмотрите, что произойдёт на проверке.

Что видит тот, кто подслушивает
  1. 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

Расставьте шаги рукопожатия TLS по порядку

Расставьте по порядку кнопками «выше» и «ниже».

Карточки

Эти карточки попадут в повторение, когда вы завершите урок.

  • Что даёт HTTPS?

    Ответ

    HTTP внутри TLS: шифрование (подслушать нельзя), целостность (подменить незаметно нельзя) и проверку сервера (это владелец домена).

  • Как устроено рукопожатие TLS?

    Ответ

    Браузер и сервер обмениваются «половинками» секрета и вычисляют общий ключ, сервер присылает сертификат, браузер его проверяет. Дальше данные шифруются общим ключом.

  • Что в сертификате сайта?

    Ответ

    Имя сайта, его открытый ключ, срок действия и подпись удостоверяющего центра.

  • Кому браузер доверяет сертификаты?

    Ответ

    Удостоверяющим центрам из своего списка (или списка системы). Сертификат должен быть подписан центром из списка, прямо или по цепочке.

  • Что на самом деле означает замочек?

    Ответ

    Канал защищён, и вы говорите с владельцем домена. Что владелец честный, замочек не гарантирует.

Источники

Видео

HTTP или HTTPS: как работает и в чём разница (Merion Academy)

Видео загрузится с youtube-nocookie.com только после нажатия.

Открыть на сайте

Дальше

Теперь вы знаете: HTTPS и TLS, сертификаты и доверие.