Глоссарий

Что такое OpenSSL? Библиотека, которая обеспечивает шифрование HTTPS, и как поддерживать её в безопасности

OpenSSL — открытая библиотека, на которой держатся HTTPS (TLS/SSL) и шифрование. Почему один баг затрагивает серверы по всему миру и как её обновлять.

Опубликовано 2026-06-29 Обновлено 2026-10-06 7 мин чтения
На этой странице

Если вы отдаёте HTTPS, ваш сервер почти наверняка работает на OpenSSL (или совместимой реализации). Вы никогда не касаетесь его напрямую, но когда в нём находят уязвимость, затронутыми оказываются огромное число серверов. Разберём, что делает эта библиотека и как её защищать.

Где он используется

Каверзность OpenSSL в том, что вы используете его, ни разу его не выбрав. Ваше приложение делегирует TLS веб-серверу, веб-сервер делегирует криптографию OpenSSL, а этот OpenSSL поставляется с ОС; получается вложенный стек.

Ваше приложение
↓ делегирует TLS
Веб-сервер (Nginx / Apache) · среда выполнения языка
↓ делегирует криптографию
OpenSSL (поставляется с ОС)
OpenSSL — нижний слой. Каждый слой выше делегирует криптографию ему, поэтому одна уязвимость затрагивает их все.

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

OpenSSL, SSL/TLS и сертификаты

Названия звучат похоже, поэтому их путают, но у каждого своя роль.

ТерминЧто этоПример
SSL / TLSПравила (протокол) шифрования соединения. SSL — старая версия; сегодня используют TLS 1.2 / 1.3HTTPS — это HTTP, обёрнутый в TLS
OpenSSLПрограмма (библиотека), которая фактически выполняет TLS и криптографические операции, плюс входящий в комплект инструмент командной строкиNginx и Apache вызывают её внутри
СертификатДанные, в которых удостоверяющий центр подтверждает, что вы владеете доменом. Содержит открытый ключLet's Encrypt выдаёт их бесплатно

Итак, OpenSSL — один из инструментов, реализующих правила TLS, а сертификат — данные, которые этот инструмент использует при соединении. TLS реализуют и другие библиотеки (LibreSSL, BoringSSL, Windows Schannel и другие), и какая из них используется, зависит от ОС и ПО.

Почему последствия так широки: один баг поставил под угрозу ключи множества серверов

Heartbleed 2014 года (CVE-2014-0160) возник из небольшой ошибки реализации в OpenSSL (доверие к заявленной длине без её проверки), которая позволяла постороннему понемногу читать память сервера — а в ней могли оказаться приватные ключи и данные сессий. Поскольку OpenSSL использовался настолько широко, огромное число серверов по всему миру стало мишенями одновременно (полная история → Heartbleed).

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

Как защищаться: избегайте EOL, мониторьте фундаментальные библиотеки

1

Знайте, какой OpenSSL использует ваш стек

Нельзя защитить то, чего не видишь. Составьте инвентарь, от какого OpenSSL (линия выпусков и версия) зависят ваши серверы, базовые образы контейнеров и среды выполнения языков.

2

Не работайте на версиях с истёкшей поддержкой (EOL)

Как только линия выпусков выходит из поддержки, новые найденные в ней уязвимости уже не исправляются. Если продолжать работать на EOL, уязвимости остаются неисправленными даже после их обнаружения. Планируйте переход на поддерживаемую линию.

3

Включайте фундаментальные библиотеки в мониторинг CVE

Зависимости приложения легко отслеживать с помощью osv-scanner и подобных инструментов, но поставляемый с ОС OpenSSL легко упустить. Убедитесь, что новые CVE в фундаментальных библиотеках тоже всплывают (→ плейбук по устранению CVE).

4

Патчите без промедления, когда дело серьёзное

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

Поддерживаемые версии (на октябрь 2026 года)

Проект OpenSSL выпускает версию с долгосрочной поддержкой (LTS) в апреле нечётных лет и поддерживает её не менее пяти лет. Версии без LTS, выпущенные после 3.5, поддерживаются 13 месяцев с момента выпуска.

ЛинияТипОкончание поддержки
4.0Обычная14 мая 2027
3.6Обычная1 ноября 2026
3.5LTS8 апреля 2030
3.4Обычная22 октября 2026
3.0 / 1.1.1 / 1.0.2—Завершена (только платная расширенная поддержка от OpenSSL Corporation)

С OpenSSL, поставляемым вашей ОС, ситуация другая. Многие дистрибутивы Linux, в том числе основанные на Red Hat, включают исправления, не повышая номер версии (бэкпортирование). В течение срока поддержки ОС пакет, который по-прежнему показывает 3.0, может продолжать получать исправления от вендора ОС. Не судите «старое — значит уязвимое» или «новое — значит безопасное» только по номеру; сверяйтесь с бюллетенями безопасности вендора ОС.

Как проверить свою среду

1

Проверьте OpenSSL в ОС

Выполните openssl version -a, чтобы увидеть версию. Версию пакета покажет dpkg -l 'libssl*' openssl в Debian/Ubuntu или rpm -q openssl в системах на основе Red Hat. Сравните версию пакета с бюллетенями безопасности вендора ОС, чтобы понять, включено ли исправление.
2

Проверьте, что фактически используют приложения

Некоторое ПО содержит собственный OpenSSL отдельно от ОС. Встроенную версию показывают nginx -V для Nginx, python3 -c "import ssl; print(ssl.OPENSSL_VERSION)" для Python и node -p process.versions.openssl для Node.js.
3

Проверьте и образы контейнеров

OpenSSL внутри контейнера не меняется при обновлении ОС хоста. Регулярно пересобирайте базовые образы и сканируйте каждый образ на уязвимости.
4

Подпишитесь на объявления безопасности OpenSSL

О выпусках с серьёзными исправлениями в рассылке openssl-announce примерно за неделю сообщают дату и серьёзность (без подробностей). Получив такое уведомление, можно заранее выделить время на обновление.

Как читать серьёзность уязвимостей

Проект OpenSSL сам оценивает свои уязвимости по четырём уровням и в зависимости от этого меняет способ выпуска исправлений.

СерьёзностьПримерный смыслКак выпускается исправление
CriticalЗатрагивает распространённые конфигурации и легко эксплуатируется (значительная утечка памяти сервера, кража приватных ключей и т. п.)Исправление сразу выпускается для всех поддерживаемых версий
HighМенее рискованно, чем Critical, но всё же серьёзно (менее распространённые конфигурации, только клиентская сторона и т. п.)Готовится закрыто, затем выпускается для всех поддерживаемых версий
ModerateОграничено отказом в обслуживании, редкими протоколами и т. п.Включается в следующий плановый выпуск
LowТолько инструменты командной строки, маловероятные сочетания условий и т. п.Включается в следующий плановый выпуск

Изъян вроде Heartbleed, при котором память сервера можно читать извне, соответствует определению Critical. Для Critical и High начинайте готовить обновление, как только увидите предварительное уведомление.

Наш взгляд: мониторьте фундаментальные библиотеки машинами

Уязвимости фундаментальных библиотек нельзя отслеживать на человеческой памяти. Этот сайт держит собственные зависимости и фундаменты под машинным мониторингом CVE. Сертификаты, которые вы отдаёте через Let's Encrypt, всё равно прогоняют свою криптографию через реализацию из семейства OpenSSL внизу, поэтому составить список фундаментальных библиотек, о которых вы обычно не думаете, и мониторить их — самый прямой способ предотвратить инциденты с широкими последствиями.

Читать дальше

Источники (первичные)

  • OpenSSL Library, «Release Strategy» — openssl-library.org (политика LTS, даты окончания поддержки каждой линии)
  • OpenSSL Library, «Security Policy» — openssl-library.org (четыре уровня серьёзности, предварительное уведомление)
  • Red Hat, «Backporting Security Fixes» — access.redhat.com (почему по одному номеру версии нельзя понять, уязвимы ли вы)
  • NIST NVD, «CVE-2014-0160» — nvd.nist.gov (Heartbleed)

FAQ

QЯ никогда не устанавливал OpenSSL — мог ли я всё равно его использовать?
A

Почти наверняка да. OpenSSL — фундаментальная библиотека, которую внутри используют веб-серверы (Nginx/Apache), операционные системы и среды выполнения языков. Даже если вы нигде не ссылаетесь на неё в коде, при отдаче HTTPS внизу с высокой вероятностью работает OpenSSL (или совместимая реализация). Допущение «я им не пользуюсь» — ровно то, из-за чего фундаментальные уязвимости остаются незамеченными.

QЧем он отличается от LibreSSL или BoringSSL?
A

Оба — форки OpenSSL. LibreSSL создал проект OpenBSD после Heartbleed, чтобы вычистить кодовую базу; BoringSSL — вариант Google для собственных нужд. Большинству пользователей не нужно выбирать между ними — куда важнее держать ту реализацию, что поставляется с вашей платформой, на поддерживаемой и актуальной версии.

QКак проверить версию или обновить её?
A

На многих системах версию показывает `openssl version`, а обновляют его через пакетный менеджер ОС или пересборкой базового образа контейнера. Главное — не оставаться на версии с истёкшей поддержкой (EOL): как только линия выпусков достигла EOL, новые найденные в ней уязвимости уже не получают исправлений. Отслеживайте фундаментальные зависимости так же, как зависимости своего приложения.

QЧем OpenSSL отличается от SSL?
A

SSL (сегодня — его преемник TLS) — это название правил (протокола) шифрования соединения. OpenSSL — название программы (библиотеки), которая эти правила выполняет. Когда вы подключаетесь по HTTPS, веб-сервер использует библиотеку вроде OpenSSL для работы с TLS.

QМожно ли ещё использовать OpenSSL 3.0?
A

Поддержка 3.0 со стороны проекта OpenSSL закончилась (кроме платной расширенной поддержки). Однако пакет 3.0, поставляемый дистрибутивом Linux, может продолжать получать перенесённые исправления в течение срока поддержки этой ОС. Собранная вами самостоятельно 3.0 или встроенная в приложение исправлений не получит, поэтому переходите на поддерживаемую линию, например 3.5 (LTS, поддержка до апреля 2030 года).

QОбъявлена уязвимость OpenSSL. Что делать в первую очередь?
A

Сначала проверьте серьёзность. Если это Critical или High, проверьте, используют ли ваши серверы, контейнеры и приложения затронутую линию OpenSSL, и обновитесь, как только вендор ОС или издатель образа выпустит исправление. После обновления перезапустите процессы, которые загружают OpenSSL (например, веб-сервер), иначе в памяти останется старая библиотека.