Что такое SSL и TLS: как протокол шифрует соединение

SSL это старое название протокола, который шифрует соединение с сайтом и подтверждает его подлинность. Сейчас вместо него работают TLS 1.2 и 1.3.

Разбираем, чем отличаются версии, как проходит рукопожатие и что на самом деле доказывает сертификат, а ещё показываем, как проверить сайт командой OpenSSL и что значат частые ошибки.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3067 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3721 экспертное мнение Подписаться на Телеграм-канал
Обложка: Что такое SSL и TLS: как протокол шифрует соединение

SSL (Secure Sockets Layer) это протокол, который шифрует соединение между браузером и сервером, проверяет подлинность сайта и не даёт незаметно подменить данные по дороге. Сам SSL давно выведен из употребления: все его версии признаны небезопасными, а вместо него работает TLS (Transport Layer Security). Название при этом прижилось, поэтому «SSL-сертификатом» и «SSL-соединением» до сих пор называют то, что на деле работает по TLS 1.2 или 1.3.

Если сайт открывается по https://, под ним работает именно TLS. Чем HTTPS отличается от обычного HTTP, мы разобрали в статье HTTP и HTTPS: в чём разница, а здесь речь о самом протоколе шифрования: какие у него версии, как проходит рукопожатие и как проверить соединение своими руками. Если хочется работать с этим профессионально, подборка курсов по информационной безопасности есть в нашем каталоге.

CheckroiCheckroiПодборка курсов по информационной безопасности187 курсов • 35 школСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что делает SSL/TLS простыми словами

Рой запечатывает конверт с письмом сургучной печатью с замком

Представьте, что вы передаёте записку через незнакомых людей. Без защиты любой из них может её прочитать, переписать или выдать себя за адресата. TLS закрывает все три риска:

  • Конфиденциальность. Данные шифруются, и посредник видит только бессмысленный набор байтов.
  • Целостность. Каждая порция данных снабжена кодом проверки. Изменили хоть один байт, и получатель отбросит такую запись.
  • Аутентификация. Сервер предъявляет сертификат, подписанный удостоверяющим центром, и клиент убеждается, что говорит именно с нужным сайтом, а не с подставным.

Спецификация TLS 1.3 формулирует задачу так: протокол позволяет клиент-серверным приложениям общаться через интернет так, чтобы предотвратить прослушивание, подделку и фальсификацию сообщений. Без проверки подлинности шифрование мало что даёт: защищённый канал до мошенника защищает только мошенника. Как злоумышленники выдают себя за чужой сервер, рассказано в статье про спуфинг.

TLS работает поверх TCP и ниже прикладных протоколов. Место SSL/TLS среди остальных уровней удобно смотреть в обзоре сетевых протоколов.

SSL и TLS: в чём разница и какие версии живы

Разница между SSL и TLS в основном историческая. SSL придумали в Netscape: описание версии 2.0 датировано 9 февраля 1995 года, а последней версии 3.0 датировано 18 ноября 1996 года. Через три года IETF выпустила доработанный протокол под новым именем TLS 1.0, и дальше развивался только он.

Версия Год Статус
SSL 2.0 1995 запрещена с 2011 года
SSL 3.0 1996 запрещена с 2015 года
TLS 1.0 1999 устарела с 2021 года
TLS 1.1 2006 устарела с 2021 года
TLS 1.2 2008 работает
TLS 1.3 2018 работает, основная

За каждой строкой стоит документ IETF. SSL 2.0 запретили отдельным стандартом: клиенты и серверы никогда не должны договариваться об этой версии. SSL 3.0 признали недостаточно безопасным после атаки POODLE на режим CBC, там же отмечены слабости шифра RC4.

TLS 1.0 и 1.1 перевели в исторический статус в марте 2021 года: в них нет поддержки современных криптографических алгоритмов. Так что «SSL что такое» сегодня на практике означает «TLS 1.2 или 1.3».

Чем TLS 1.3 лучше TLS 1.2

В версии 1.3 убрали почти всё устаревшее, что накопилось за двадцать лет. Главные изменения по спецификации TLS 1.3:

  1. Остались только шифры с аутентифицированным шифрованием (AEAD), устаревшие алгоритмы убраны.
  2. Убран обмен ключами через статический RSA. Каждое соединение получает свои одноразовые ключи, поэтому украденный когда-нибудь закрытый ключ сервера не позволит расшифровать ранее записанный трафик. Это свойство называют прямой секретностью (forward secrecy).
  3. Все сообщения рукопожатия после ServerHello шифруются, в том числе сертификат сервера.
  4. Полное рукопожатие укладывается в один круг «запрос → ответ», в спецификации его называют 1-RTT. В TLS 1.2 по схеме из стандарта до первых данных уходило два круга.

Для повторных подключений в TLS 1.3 есть ещё режим 0-RTT: клиент, который уже общался с сервером, отправляет данные вместе с первым же сообщением. Это экономит время, но в спецификации прямо предупреждают, что защита у таких данных слабее: у них нет прямой секретности и нет гарантии от повторной отправки.

Перехваченный запрос из 0-RTT можно отправить на сервер ещё раз. Для загрузки страницы это безвредно, а вот платёж или отправку формы так передавать опасно.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Как работает рукопожатие TLS

Два ключа соединяются в общий ключ над схемой соединения

Рукопожатием (handshake) называют короткий обмен сообщениями перед передачей данных. За это время стороны договариваются о версии и шифре, сервер доказывает свою подлинность, и обе стороны получают общий секретный ключ. Вот как это выглядит в TLS 1.3:

  1. ClientHello. Сначала браузер открывает обычное TCP-соединение (чем TCP отличается от UDP, разобрано в статье про UDP), а затем сообщает, какие версии и наборы шифров он умеет, и сразу присылает свою половину обмена ключами (например, на кривой X25519).
  2. ServerHello. Сервер выбирает версию и шифр и отвечает своей половиной обмена. С этого момента у обеих сторон есть общий секрет, и дальше всё идёт зашифрованным.
  3. Сертификат и подпись. Сервер отправляет сертификат и подписывает своим закрытым ключом всю переписку рукопожатия. Браузер проверяет цепочку сертификатов и подпись.
  4. Finished. Стороны обмениваются контрольными значениями. Если кто-то вмешался в рукопожатие, значения не совпадут, и соединение оборвётся.
  5. Данные приложения. Дальше идут HTTP-запросы и ответы, зашифрованные симметричным шифром вроде AES-GCM или ChaCha20-Poly1305.

Асимметричная криптография (обмен ключами, подписи) работает только на этапе рукопожатия. Сами данные шифруются симметрично, потому что симметричные шифры работают намного быстрее. Как устроены оба вида шифрования и чем открытый ключ отличается от закрытого, объясняет статья про основы криптографии.

Что значит набор шифров

Набором шифров (cipher suite) называют строку, в которой зашиты алгоритмы соединения. В TLS 1.2 она длинная, потому что описывает всё сразу:

ECDHE-RSA-CHACHA20-POLY1305
ECDHE             — обмен ключами (эллиптические кривые, одноразовые ключи)
RSA               — чем сервер подтверждает подлинность
CHACHA20-POLY1305 — шифрование данных и проверка целостности

В TLS 1.3 обмен ключами и подпись договариваются отдельно, и в имени набора остаются только шифр и хеш-функция: TLS_AES_256_GCM_SHA384. Поэтому строки у двух версий выглядят по-разному, хотя назначение у них одно.

Что такое SSL-сертификат и цепочка доверия

Сертификат это электронный документ, который связывает доменное имя с открытым ключом сервера. Его подписывает удостоверяющий центр (Certificate Authority, CA), а браузер и операционная система заранее хранят список корневых центров, которым доверяют.

Подпись идёт по цепочке. Корневой центр подписывает промежуточный, промежуточный подписывает сертификат сайта. У сайта Checkroi цепочка выглядит так:

 0 s:CN = checkroi.ru
   i:C = US, O = Let's Encrypt, CN = YR2
 1 s:C = US, O = Let's Encrypt, CN = YR2
   i:C = US, O = ISRG, CN = Root YR
 2 s:C = US, O = ISRG, CN = Root YR
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1

В строке s: указано, кому выдан сертификат, в строке i: указан тот, кто его подписал. Браузер поднимается по цепочке, пока не дойдёт до корня из своего хранилища. Не нашёл корень или одно звено просрочено, значит, соединение помечается как небезопасное.

Сертификат доказывает меньше, чем кажется. Он подтверждает, что вы подключились к серверу, который управляет этим доменом. Честность владельца сайта он не проверяет: сертификат на домен может получить и мошенник, поэтому замочек в адресной строке не гарантирует, что сайт безопасен. Адрес стоит сверять глазами, особенно если сайт просит пароль или данные карты.

Какие бывают сертификаты

Тип Что проверяет центр Кому подходит
DV (Domain Validation) только право управлять доменом блоги, лендинги, большинство сайтов
OV (Organization Validation) домен и существование организации сайты компаний
EV (Extended Validation) расширенная проверка юрлица банки, крупные сервисы

Шифруют все три типа одинаково, разница только в том, сколько центр узнал о владельце. Wildcard-сертификат (*.example.ru) покрывает все поддомены первого уровня, а мультидоменный перечисляет нужные имена в поле Subject Alternative Name.

Срок жизни сертификатов сокращается. Let’s Encrypt сейчас выдаёт сертификаты на 90 дней и планирует перейти на 64 дня с 10 февраля 2027 года и на 45 дней с 16 февраля 2028 года. Для всех публичных центров отрасль приняла график сокращения максимального срока с 398 до 47 дней с марта 2026 по март 2029 года, поэтому продление вручную становится непрактичным и его автоматизируют. Настраивать такое автопродление обычно приходится DevOps-инженеру или системному администратору.

Про российские сертификаты Национального удостоверяющего центра Минцифры и браузеры, которые их принимают, рассказано в той же статье про HTTPS.

CheckroiCheckroiПодборка курсов по кибербезопасности65 курсов • 25 школСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Как проверить SSL/TLS у сайта

Быстрее всего проверить в браузере. Значок слева от адреса показывает, защищено ли соединение, а по клику открываются сведения о сайте и сертификате. Но версию TLS и набор шифров браузер обычно прячет глубже, поэтому удобнее командная строка.

Через OpenSSL

OpenSSL установлен почти на любом Linux-сервере. Команда подключается к сайту и коротко печатает итог рукопожатия:

echo | openssl s_client -connect checkroi.ru:443 -servername checkroi.ru -brief
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_256_GCM_SHA384
Peer certificate: CN = checkroi.ru
Hash used: SHA256
Signature type: RSA-PSS
Verification: OK
Server Temp Key: X25519, 253 bits
DONE

Вывод снят 27 октября 2026 года в OpenSSL 3.0.13. Что в нём важно:

  • Protocol version: версия, о которой договорились клиент и сервер;
  • Ciphersuite: набор шифров;
  • Verification: OK: цепочка сертификатов проверена и доверенная;
  • Server Temp Key: X25519: одноразовый ключ обмена, значит, прямая секретность работает.

Флаг -servername задаёт имя сайта явно: через него передаётся расширение SNI, и сервер, на котором живёт несколько доменов, выдаст нужный сертификат. Пояснения ко всем флагам есть в документации OpenSSL. Если команды терминала пока непривычны, начните со шпаргалки по командам Linux.

Срок действия сертификата и издателя покажет связка из двух команд:

echo | openssl s_client -connect checkroi.ru:443 -servername checkroi.ru 2>/dev/null \
  | openssl x509 -noout -issuer -enddate
issuer=C = US, O = Let's Encrypt, CN = YR2
notAfter=Dec 27 23:30:00 2026 GMT

В macOS по умолчанию стоит LibreSSL 3.3.6, и флаг -brief он не знает: команда ответит unknown option -brief. Версию и шифр там проще достать фильтром:

echo | openssl s_client -connect checkroi.ru:443 -servername checkroi.ru 2>/dev/null \
  | grep -E '^\s*(Protocol|Cipher)\s*:'
    Protocol  : TLSv1.3
    Cipher    : AEAD-AES256-GCM-SHA384

Принимает ли сервер старые версии

По RFC 8996 версии TLS 1.0 и 1.1 использовать нельзя, так что сервер не должен на них соглашаться. Проверить можно, попросив у него устаревшую версию. Современный OpenSSL сам отказывается её включать, поэтому уровень безопасности клиента приходится временно понизить параметром @SECLEVEL=0:

echo | openssl s_client -connect checkroi.ru:443 -servername checkroi.ru \
  -tls1_1 -cipher "DEFAULT@SECLEVEL=0"
40F715CC09780000:error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:../ssl/record/rec_layer_s3.c:1599:SSL alert number 70
CONNECTED(00000003)
---
no peer certificate available

Сигнал alert protocol version означает, что сервер отказался: версию 1.1 он не поддерживает, и это правильно. Если вместо ошибки пришёл сертификат, старые версии на сервере стоит отключить. Для массовой проверки открытых портов и служб пригодится Nmap.

Где ещё работает TLS, кроме сайтов

HTTPS заметнее всех, но TLS защищает и другие службы. У многих из них есть отдельный порт для шифрованного подключения:

Что защищает Порт Источник
сайты (HTTPS) 443 стандарт HTTP
отправка почты (SMTP) 465 RFC 8314
получение почты (IMAP) 993 там же
получение почты (POP3) 995 там же
DNS-запросы (DNS over TLS) 853 RFC 7858

Почему у HTTPS именно 443 и как проверить, открыт ли этот порт, разобрано в статье про порт 443. Как почтовые протоколы используют шифрование и какие порты указывать в почтовом клиенте, есть в материале про SMTP, IMAP и POP3.

Ещё TLS шифрует подключения к базам данных, брокерам сообщений и внутренним API. В микросервисах часто используют взаимный TLS (mTLS): сертификат предъявляет не только сервер, но и клиент, поэтому чужой сервис не подключится, даже если найдёт адрес.

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Частые ошибки SSL и что с ними делать

Рой радуется зелёной галочке проверки сертификата на мониторе

Большинство предупреждений браузера сводится к пяти причинам. Ниже реальные ответы OpenSSL на тестовых стендах badssl.com, где каждая ошибка воспроизводится специально:

Что пишет OpenSSL Причина Что делать
certificate has expired сертификат просрочен владельцу сайта продлить и настроить автопродление; посетителю проверить дату и время на компьютере
hostname mismatch сертификат выдан на другое имя выпустить сертификат с нужным доменом в списке имён, проверить www и поддомены
self-signed certificate сертификат подписан сам собой, без центра для публичного сайта заменить на сертификат от удостоверяющего центра
unable to get local issuer certificate сервер не отдал промежуточный сертификат подключить в настройках сервера полную цепочку (fullchain), а не только сертификат сайта
unsupported protocol сервер умеет только устаревшие версии обновить настройки сервера до TLS 1.2 и 1.3

Хуже всего ловится неполная цепочка. Браузеры иногда достраивают недостающее звено сами, и сайт у владельца открывается нормально. А мобильное приложение, скрипт на Python или curl на сервере падают с ошибкой проверки.

Решение: проверять сайт не только в браузере, но и командой openssl s_client из раздела выше. Строка Verification: OK там означает, что цепочка собрана полностью.

Проверка имени тоже требует внимания. По умолчанию s_client только проверяет цепочку и не сравнивает домен с сертификатом. Ошибку hostname mismatch он покажет, если добавить флаг -verify_hostname с именем сайта.

Где освоить сетевую безопасность системно

Понять, что такое SSL и как прочитать вывод OpenSSL, можно за вечер. Настроить TLS на десятке серверов, вести учёт сертификатов, расследовать перехват трафика и разбираться в атаках на протоколы уже работа сетевого инженера или специалиста по кибербезопасности, и её учат на курсах по информационной безопасности.

Ниже курсы из каталога Checkroi с ценами и программами. Все программы раздела собраны на странице курсов по информационной безопасности.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
ДО Профессия Специалист по кибербезопасности 2.0
Перейти на сайт курса
GeekBrainsGeekBrains141 563 ₽3933 ₽/мес.12 месяцевОбзор курса
Кибербезопасность
Перейти на сайт курса
НетологияНетология200 000 ₽ - 24 месяцаОбзор курса
Специалист по кибербезопасности
Перейти на сайт курса
Академия ЭдюсонЭдюсон145 900 ₽6079 ₽/мес.5 месяцевОбзор курса
Онлайн-магистратура МИФИ "Информационная безопасность"
Перейти на сайт курса
SkillFactorySkillFactory225 000 ₽ - 24 месяцаОбзор курса
Магистратура «Кибербезопасность» с НИУ ВШЭ
Перейти на сайт курса
НетологияНетология310 000 ₽ - 23 месяцаОбзор курса

Больше программ — в полном каталоге курсов по информационной безопасности

Часто задаваемые вопросы

Что такое SSL простыми словами?

SSL — протокол, который шифрует соединение между браузером и сайтом и подтверждает, что сайт настоящий. Все версии SSL давно устарели, сейчас вместо него работает TLS, но старое название прижилось в словах «SSL-сертификат» и «SSL-соединение».

Чем SSL отличается от TLS?

TLS — следующее поколение того же протокола. Последняя версия SSL 3.0 вышла в 1996 году и запрещена с 2015-го, а TLS 1.2 и TLS 1.3 работают сейчас. Когда говорят «SSL», почти всегда имеют в виду TLS.

Какую версию TLS использовать на сервере?

Включите TLS 1.3 и TLS 1.2, а TLS 1.0 и 1.1 отключите: в 2021 году их официально признали устаревшими. Проверить, что сервер не принимает старые версии, можно командой openssl s_client с флагом -tls1_1.

Как узнать, какой протокол шифрования использует сайт?

Выполните в терминале echo | openssl s_client -connect сайт:443 -servername сайт -brief. В строке Protocol version будет версия TLS, в строке Ciphersuite — набор шифров, а Verification: OK означает, что сертификат проверен.

Чем SSL-сертификат отличается от протокола SSL?

Протокол описывает, как стороны договариваются и шифруют данные. Сертификат — электронный документ, который связывает домен с открытым ключом сервера и подписан удостоверяющим центром. Без сертификата браузер не сможет убедиться, что подключился к нужному сайту.

Почему браузер пишет, что сертификат недействителен?

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

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!