Открыть сервис

OCSP Must-Staple

OCSP Must-Staple — это расширение протокола TLS (Transport Layer Security), реализованное в виде флага в сертификате X.509, которое обязывает веб-сервер предоставлять клиенту актуальный ответ OCSP (Online Certificate Status Protocol) о статусе сертификата в момент установления соединения. Данный механизм предназначен для повышения безопасности проверки отзыва сертификатов и предотвращения атак, связанных с подменой или блокировкой запросов к центру сертификации.

История и предпосылки появления

До внедрения OCSP Must-Staple основным способом проверки статуса сертификата был OCSP-запрос, при котором клиент (браузер или другое приложение) самостоятельно обращался к OCSP-серверу удостоверяющего центра. Этот подход имел несколько недостатков:

  • Проблемы с производительностью: Каждый запрос к OCSP-серверу увеличивал время загрузки страницы, особенно при медленном соединении или недоступности сервера.
  • Уязвимость к атакам типа «человек посередине»: Злоумышленник мог перехватить OCSP-запрос и вернуть поддельный ответ, указывающий, что сертификат действителен, даже если он был отозван.
  • Нарушение конфиденциальности: Запросы к OCSP-серверу раскрывали информацию о том, какие сайты посещает пользователь, что нарушало приватность.

В 2011 году в спецификации TLS 1.2 (RFC 6066) было предложено расширение Certificate Status Request, которое позволяло серверу «прикреплять» (staple) ответ OCSP к своему сертификату при рукопожатии. Однако это расширение было опциональным — сервер мог его не использовать. Для устранения этой необязательности в 2013 году в RFC 6961 (TLS Multiple Certificate Status Request Extension) был введён флаг Must-Staple (дословно — «обязательно прикреплять»). Он стал частью расширения X.509v3, добавляемого в сертификат при его выпуске.

Принцип работы

Обычный OCSP (без Must-Staple)

  1. Клиент устанавливает TLS-соединение с сервером.
  2. Сервер предоставляет свой сертификат.
  3. Клиент отправляет OCSP-запрос к серверу удостоверяющего центра (URL указан в сертификате).
  4. Сервер удостоверяющего центра возвращает подписанный ответ: «действителен», «отозван» или «неизвестен».
  5. Клиент принимает решение о продолжении или разрыве соединения.

OCSP с Must-Staple

  1. Клиент при TLS-рукопожатии отправляет расширение status_request (или status_request_v2), указывая, что поддерживает OCSP Stapling.
  2. Сервер, имеющий сертификат с флагом Must-Staple, обязан предоставить подписанный OCSP-ответ, действительный на момент соединения. Если сервер не предоставляет ответа, клиент должен разорвать соединение.
  3. Клиент проверяет подпись OCSP-ответа и статус сертификата. Если ответ отсутствует или недействителен, соединение прерывается.

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

Технические детали

Формат флага в сертификате

Флаг Must-Staple реализуется через расширение сертификата X.509v3 с идентификатором 1.3.6.1.5.5.7.1.24 (id-pe-tlsfeature). Это расширение содержит последовательность целых чисел, где значение 5 (status_request) или 17 (status_request_v2) указывает на обязательность использования OCSP Stapling. Сертификат с таким расширением не может быть использован без предоставления актуального OCSP-ответа.

Требования к серверу

  • Сервер должен периодически (обычно каждые несколько часов) запрашивать у удостоверяющего центра подписанный OCSP-ответ для своего сертификата.
  • Ответ должен быть действителен на момент предоставления клиенту. Если ответ просрочен, клиент может отклонить соединение.
  • Сервер должен быть настроен на включение OCSP Stapling в конфигурации TLS (например, в Apache, Nginx, IIS).

Требования к клиенту

  • Клиент (браузер, мобильное приложение, библиотека) должен поддерживать расширение TLS status_request и уметь обрабатывать OCSP-ответы.
  • При получении сертификата с флагом Must-Staple клиент обязан требовать OCSP-ответ. Если ответ отсутствует, соединение должно быть разорвано.

Преимущества и недостатки

Преимущества

  • Повышение безопасности: Устраняется возможность атак, при которых злоумышленник блокирует или подменяет OCSP-запросы. Сервер вынужден предоставлять только действительный ответ.
  • Снижение задержек: Клиенту не нужно ждать ответа от удостоверяющего центра, что ускоряет установку соединения.
  • Конфиденциальность: Удостоверяющий центр не узнаёт, какие сайты посещает пользователь, так как запросы не отправляются.
  • Устойчивость к отказам: Если сервер удостоверяющего центра временно недоступен, это не влияет на проверку статуса сертификата, так как ответ уже получен сервером заранее.

Недостатки

  • Сложность настройки: Администраторы серверов должны настроить автоматическое обновление OCSP-ответов и обеспечить их актуальность.
  • Зависимость от удостоверяющего центра: Если удостоверяющий центр перестаёт выпускать подписанные ответы (например, из-за технического сбоя), сервер не может корректно работать.
  • Ограниченная поддержка: Не все клиенты (особенно старые версии браузеров или библиотек) поддерживают OCSP Must-Staple. В таких случаях сертификат с флагом может привести к ошибкам соединения.
  • Риск при компрометации сервера: Если злоумышленник получит доступ к серверу, он может использовать старый, но ещё действительный OCSP-ответ для подмены сертификата.

Применение

OCSP Must-Staple рекомендуется для всех веб-сайтов, использующих HTTPS, особенно для тех, где безопасность критична: банковские системы, интернет-магазины, государственные порталы, сервисы электронной почты. Крупные удостоверяющие центры, такие как Let’s Encrypt, DigiCert, GlobalSign, поддерживают выпуск сертификатов с флагом Must-Staple. В 2020 году Let’s Encrypt начал автоматически добавлять этот флаг ко всем новым сертификатам.

В России использование OCSP Must-Staple регулируется нормативными актами в области информационной безопасности, в частности, требованиями к защите персональных данных (ФЗ-152) и критической информационной инфраструктуры (ФЗ-187). Рекомендации по настройке TLS-соединений с использованием OCSP Stapling содержатся в методических документах ФСТЭК России.

Критика и ограничения

Несмотря на преимущества, OCSP Must-Staple не является панацеей. Основная критика связана с тем, что механизм не решает проблему «мягкого отказа» (soft-fail), когда клиент при отсутствии OCSP-ответа продолжает соединение, полагаясь на другие методы проверки (например, CRL). В случае Must-Staple разрыв соединения при отсутствии ответа может привести к недоступности сайта, если сервер временно не может получить актуальный ответ от удостоверяющего центра.

Кроме того, флаг Must-Staple не защищает от атак, при которых злоумышленник перехватывает и подменяет сам OCSP-ответ, полученный сервером от удостоверяющего центра. Для полной защиты требуется дополнительная проверка подписи ответа и использование механизмов типа Certificate Transparency.

Интересные факты

  • OCSP Must-Staple был предложен как часть более широкой инициативы по отказу от традиционных списков отзыва сертификатов (CRL), которые становятся слишком большими для эффективной загрузки.
  • В 2018 году Google Chrome начал требовать OCSP Stapling для сертификатов, выпущенных некоторыми удостоверяющими центрами, что стимулировало их внедрение.
  • В 2023 году Let’s Encrypt сообщила, что более 90% всех выпущенных ею сертификатов содержат флаг Must-Staple.

Источники

  1. RFC 6066 — Transport Layer Security (TLS) Extensions: Extension Definitions (2011).
  2. RFC 6961 — The Transport Layer Security (TLS) Multiple Certificate Status Request Extension (2013).
  3. RFC 6960 — X.509 Internet Public Key Infrastructure Online Certificate Status Protocol — OCSP (2013).
  4. Let’s Encrypt — OCSP Must-Staple (документация проекта).
  5. Методические рекомендации по обеспечению безопасности TLS-соединений (ФСТЭК России, 2021).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →