Что такое HTTPS и чем он отличается от HTTP
HTTPS — тот же HTTP, но внутри защищённого канала. Именно он стоит за замком в адресной строке и предупреждением «Не защищено» на сайтах без него. Разберём, что такое HTTPS, чем он отличается от HTTP и откуда берётся сертификат.
Что добавляет HTTPS
Буква S — от secure. HTTPS не меняет ни методы, ни коды состояния, ни структуру запроса: он заворачивает обычный HTTP в слой TLS, который даёт три вещи.
- Шифрование. Никто на пути не прочитает содержимое: ни адреса страниц, ни данные форм, ни куки. Видно только, с каким доменом ты соединился.
- Целостность. Ответ нельзя незаметно подменить по дороге — вставить рекламу или подсунуть другой файл. Любое изменение ломает проверку.
- Подлинность. Ты говоришь с тем сайтом, чей адрес в строке, а не с подставным. За это отвечает сертификат.
Чем отличается от HTTP
| HTTP | HTTPS | |
|---|---|---|
| Шифрование | Нет, открытый текст | Есть, TLS |
| Защита от подмены | Нет | Есть |
| Проверка подлинности сайта | Нет | Сертификат |
| Стандартный порт | 80 | 443 |
| Метка в браузере | «Не защищено» | Замок |
| Камера, микрофон, геолокация | Заблокированы | Работают |
| Service Worker, PWA | Не работают | Работают |
| Индексация в поиске | Хуже | Лучше |
Обрати внимание на строки про камеру и Service Worker: это не рекомендация, а жёсткое ограничение браузеров. Ряд возможностей доступен только в secure context — то есть по HTTPS. Единственное исключение — сам localhost: его браузер считает доверенным. Поэтому локально PWA работает, а стоит открыть тот же сайт с телефона по IP — перестаёт.
Что такое сертификат
Сертификат — это файл, который подтверждает: данный домен принадлежит тому, кто им управляет. Выдаёт его удостоверяющий центр (CA) — организация, которой браузеры доверяют по умолчанию, например Let's Encrypt.
Механика при подключении:
- Браузер запрашивает сертификат у сервера.
- Проверяет подпись центра, срок действия и что домен в сертификате совпадает с адресом в строке.
- Всё сошлось — показывает замок и устанавливает зашифрованное соединение.
Любая нестыковка — просрочен, выдан на другой домен, подписан неизвестно кем — и браузер выкатывает красный экран с предупреждением.
Почему самоподписанный сертификат не помогает
Сертификат можно выпустить самому за минуту — и он будет технически корректным: шифрование заработает. Но подписан он не доверенным центром, а тобой, и браузеру нечем проверить, что ты — это ты. Результат: «Подключение не защищено», кнопка «Всё равно перейти», недовольные тестировщики.
Отсюда же берётся mkcert и прочие локальные удостоверяющие центры: они добавляют твой сертификат в доверенные на твоей машине. На телефоне заказчика этого доверия не будет.
HTTPS — это не «сайт безопасен»
Замок говорит ровно одно: канал зашифрован и домен подтверждён. Он не обещает, что сайт честный, что данные у него хранятся правильно и что на странице нет мошенничества. Фишинговый сайт тоже легко получает валидный сертификат — HTTPS есть, доверия он не заслуживает.
Частые вопросы
HTTPS замедляет сайт? Практически нет. Рукопожатие TLS добавляет немного на установку соединения, зато HTTPS открывает HTTP/2 и HTTP/3, которые в сумме обычно быстрее.
Что такое SSL — это другое? Исторически да: SSL — предшественник TLS, давно устаревший. Но «SSL-сертификат» по привычке говорят до сих пор, имея в виду TLS.
Сертификат нужно продлевать? Да, у них ограниченный срок. Бесплатные Let's Encrypt живут 90 дней и обычно обновляются автоматически.
Почему пишет «Не защищено» на моём сайте? Либо сертификата нет вовсе, либо он просрочен, либо выдан на другой домен, либо страница по HTTPS тянет часть ресурсов по HTTP.
Получить HTTPS для локального сайта
Выпускать и продлевать сертификат ради локальной разработки не нужно. Туннель отдаёт твой localhost наружу сразу по HTTPS с валидным сертификатом — приложение при этом продолжает работать по обычному HTTP и ничего не знает о шифровании. Как это включается — в гайде Как открыть localhost в интернет по HTTPS.
Ещё по теме: что такое HTTP · что такое TCP