Протоколы HTTP и HTTPS: чем отличаются, основные различия
Протоколы HTTP и HTTPS — основа веб-коммуникаций. Они определяют, как будут передаваться данные между браузером и сервером. В условиях растущих киберугроз чаще используется HTTPS для защищенной передачи. Рассказываем, чем он отличается от традиционного HTTP, как работает и что сделать, чтобы на него перейти.

Что такое HTTP
HTTP (HyperText Transfer Protocol) — это протокол интернета, который используется для передачи данных и работает по принципу обмена текстовыми сообщениями. Он обеспечивает связь между веб-клиентами и веб-серверами, позволяет просматривать страницы, загружать изображения, видео и другой контент.
Принцип действия HTTP
В основе работы HTTP — модель «запрос-ответ». Браузер отправляет запрос серверу, а сервер возвращает релевантный ответ. Запросы могут быть разными — например, GET для получения страницы или POST для отправки данных. В ответ сервер передает не только содержимое, но и код состояния. Например, 200 означает, что все прошло успешно, 404 — страница не найдена, 500 — сервер выдает ошибку. Это позволяет понять статус обработки запроса.
Работа HTTP
Что такое HTTPS
HTTPS — по сути тот же протокол HTTP, только с фокусом на безопасность. Об этом говорит S («Secure») в аббревиатуре. В отличие от HTTP, HTTPS использует криптографические протоколы SSL/TLS (Secure Sockets Layer/Transport Layer Security) для шифрования данных и обеспечения безопасной связи между браузером пользователя и сервером.
При подключении к сайту происходит рукопожатие (handshake) TLS. Это процесс, в ходе которого клиент и сервер «договариваются» о параметрах защиты данных и формируют общий секретный ключ. Для протокола версии TLS 1.2 процесс рукопожатия выглядит так:
ClientHello. Клиент приветствует сервер и отправляет список поддерживаемых шифров (cipher suites), версию TLS и случайное число.
ServerHello. Сервер отвечает своим приветствием, выбирая шифр и TLS-версию из клиентского списка, а также отправляя свое случайное число.
Certificate. Сервер отправляет свой SSL/TLS-сертификат для аутентификации.
ServerKeyExchange. Этот шаг является опциональным и требуется только для определенных алгоритмов ключевого обмена (например, DHE или ECDHE), когда данных сертификата недостаточно.
ServerHelloDone. Сервер сигнализирует клиенту, что его часть приветствия завершена.
ClientKeyExchange. Клиент генерирует pre-master secret, шифрует его открытым ключом сервера (из сертификата) и отправляет.
ChangeCipherSpec и Finished (от Сервера). Сервер отправляет сигнал ChangeCipherSpec, указывая, что все его последующие сообщения будут зашифрованы новыми ключами. Затем он отправляет первое такое зашифрованное сообщение — Finished, содержащее дайджест всех предыдущих сообщений рукопожатия для проверки целостности.
ChangeCipherSpec и Finished (от Клиента). Клиент проверяет Finished от сервера. Затем он также отправляет ChangeCipherSpec и свое зашифрованное сообщение Finished. После этого защищенный канал считается установленным.
Handshake TLSСимметричное и асимметричное шифрование
Для защиты данных используется два вида шифрования:
Симметричное — это способ, когда для шифрования и расшифрования данных используется один и тот же ключ. Это быстрый метод, который применяется для защиты основного трафика в HTTPS после установления соединения.
Асимметричное шифрование — использование пары ключей (открытого и закрытого). В HTTPS оно применяется на этапе TLS-рукопожатия для аутентификации сервера (и опционально клиента) и для безопасной выработки общего секретного ключа, а не для шифрования всего трафика.
Схемы симметричного и асимметричного шифрованияОсновные различия между HTTP и HTTPS
Для наглядности сравнение протоколов по разным характеристикам — в таблице.
Характеристика | HTTP | HTTPS |
Полное название | HyperText Transfer Protocol | HyperText Transfer Protocol Secure |
Используемый порт | 80 | 443 |
Безопасность | Нет шифрования, данные передаются в открытом виде | Данные шифруются с помощью SSL/TLS |
Конфиденциальность | Отсутствует | Обеспечивается — данные защищены от перехвата |
Целостность данных | Не гарантируется | Гарантируется, данные не могут быть изменены в пути |
Аутентификация сервера | Нет | Есть |
Скорость передачи | Чуть быстрее, без накладных расходов на шифрование | Могут быть небольшие задержки из-за шифрования |
Индикатор в браузере | Нет замка, иногда «Not Secure» | Замок в адресной строке, «Secure» |
Производительность и порты
HTTPS использует порт 443 для зашифрованных соединений, а HTTP — порт 80 для передачи данных в открытом виде. Браузеры определяют необходимость TLS-соединения по схеме URL (https://). Порт 443 является стандартным портом для HTTPS-соединений, но TLS может использоваться на любом TCP-порту.
Шифрование замедляет скорость соединения и вот почему:
Дополнительная нагрузка на CPU. При установке HTTPS-соединения происходит обмен ключами и настройка зашифрованного канала, что требует вычислительных ресурсов как на сервере, так и на клиенте.
Задержка при установке соединения. TLS-handshake разных версий может добавлять 1–2 дополнительных сетевых раунда по сравнению с HTTP. Итог — небольшая задержка при первом запросе.
Перенос данных после установления соединения. После настройки зашифрованного канала накладные расходы на шифрование данных, благодаря современным процессорам с поддержкой аппаратного ускорения (например, AES-NI), для подавляющего большинства веб-сайтов не оказывают заметного влияния на скорость загрузки для конечного пользователя.
Резюмируем — HTTPS чуть медленнее только при установке соединения, но при постоянных соединениях разница почти незаметна.
Ограничения и недостатки HTTP, преимущества HTTPS
Уже понятно, что преимущества HTTPS связаны с шифрованием данных, а недостатки HTTP — с его отсутствием. Резюмируем сильные и слабые стороны протоколов.
Проблемы безопасности в HTTP
Три главные проблемы, связанные с традиционным протоколом:
Риски перехвата. Данные передаются в открытом виде без шифрования, поэтому злоумышленники могут перехватить трафик и использовать в своих целях. Особенно риски высоки, если подключаетесь через общедоступный Wi-Fi.
Подмена контента. Если сайт работает на HTTP, злоумышленники могут поменять содержимое страницы или вставить фальшивую форму регистрации, чтобы украсть пароли.
Потенциальное заражение вредоносным ПО. Поскольку соединение не защищено, хакеры могут внедрить вредоносов в передаваемый трафик, например, трояна или программу-шпион для кражи паролей.
HTTPS отлично защищает канал связи «клиент-сервер», но сам сервер остается уязвимым для более масштабных атак. DDoS-атаки, направленные на превышение лимитов производительности или пропускной способности, могут сделать ваш сайт недоступным для всех пользователей, даже если их браузер показывает «защищенное» HTTPS-соединение.
Поэтому пока вы обеспечиваете шифрование трафика с помощью HTTPS, используйте специальный сервис Cloud.ru, который защищает инфраструктуру от сетевых и прикладных атак 7-го уровня (L7), которые имитируют поведение реальных пользователей.

Преимущества HTTPS
Сильные стороны защищенного протокола:
Шифрование данных. Информация передается в нечитаемом виде. Даже если ее перехватят, то не смогут воспользоваться. К тому же, на сайтах HTTPS пользователи не боятся вводить личные данные.
Проверка подлинности сайта. HTTPS использует сертификаты, которые позволяют пользователям убедиться, что веб-ресурс не фейковый.
Защита от подмены. Благодаря зашифрованному соединению пользователь получит в целостности и сохранности те данные, которые отправил сервер. Никто не может незаметно изменить страницу или вставить вредоносный код.
Доверие пользователей. Посетители охотнее остаются на сайтах, которые используют HTTPS. Если применяется HTTP, браузер выдает предупреждение, что отпугивает людей.
Улучшение SEO-продвижения. Использование HTTPS — преимущество для поисковых систем при ранжировании веб-ресурсов. HTTPS является одним из факторов ранжирования Google с 2014 года и входит в метрики Page Experience
Переход с HTTP на HTTPS
Чтобы перейти с HTTP на HTTPS, нужно получить SSL/TLS-сертификат. Можно использовать бесплатный, например, Let's Encrypt либо приобрести у аккредитованного центра сертификации. Сертификат нужно установить на сервер, после чего обновить внутренние ссылки с HTTP на HTTPS и настроить редиректы.
Зачем нужен SSL/TLS-сертификат
Сертификат — цифровой документ, который позволяет браузеру и серверу установить защищенное соединение.
У сертификата три задачи:
Шифровать данные между браузером и сервером, чтобы их нельзя было перехватить.
Подтверждать подлинность сайта, чтобы пользователь знал, что подключается к доверенному ресурсу.
Защищать данные от подмены во время передачи.
Если коротко, то сертификат делает соединение защищенным, приватным и доверенным.
Типы SSL/TLS-сертификатов
Сертификаты классифицируют по уровню проверки, охвату доменов, используемым криптоалгоритмам. В таблице — основные типы.
Тип сертификата | Описание | Примеры применения |
DV (Domain Validation) | Подтверждают, что владелец домена контролирует его. Проверки компании нет | Сайты, блоги, небольшие проекты |
OV (Organization Validation) | Подтверждают легальность организации | Корпоративные сайты, интернет-магазины |
EV (Extended Validation) | Подтверждают право владения доменом, а также юридическую информацию об организации | Банки, финансовые организации |
Сертификаты с ГОСТ | Используют алгоритмы ГОСТ Р 34.10-2012 / ГОСТ Р 34.11-2012 | Госорганы, банки |
Многие компании переходят на российские сертификаты, поскольку зарубежные в любой момент могут отозвать. Сейчас для массового использования доступна российская криптография (алгоритмы ГОСТ). Сертификаты поддерживают как ГОСТ, так и международные алгоритмы, чтобы сайты были совместимы с браузерами.
Установка SSL/TLS-сертификата для перехода сайта с HTTP на HTTPS
Краткий алгоритм действий:
Выберите аккредитованный удостоверяющий центр (УЦ). Например, в России действует удостоверяющий центр ТЦИ (Технический центр Интернет), выпускающий SSL/TLS-сертификаты с поддержкой криптографических алгоритмов ГОСТ и ECDSA. При этом RU-CENTER, Reg.ru, NIC.ru и другие компании выступают партнерами, предлагающими сертификаты ТЦИ через свои площадки.
Сгенерируйте CSR (Certificate Signing Request). Сделайте это через панель хостинга или с помощью OpenSSL. Выберите нужный алгоритм (RSA, ECDSA, ГОСТ).
Предоставьте запрошенную УЦ информацию и подтвердите права на домен.
Получите сертификат от УЦ. Удостоверяющий центр выдаст его после проверки предоставленных документов.
Установите сертификат на сервер, настройте редиректы для автоматического перехода с HTTP на HTTPS.
Проверьте работу сертификата и совместимость с браузерами и ОС.
При необходимости обеспечьте автоматическое продление сертификата, чтобы ваш сайт не остался без защиты.
Заключение
Протокол HTTPS отличается от HTTP шифрованием данных с помощью SSL/TLS. Он обеспечивает конфиденциальность и целостность информации, защиту от перехвата и подделки. Если важны безопасность и доверие пользователей, рекомендуем использовать его. В первую очередь там, где обрабатываются личные данные или платежи.
