Когда центр сертификации (ЦС) выпускает сертификат, он не «отзывает» его автоматически при компрометации: отзыв нужно проверять отдельно. Обычно для этого клиент обращается к инфраструктуре самого ЦС — по протоколу OCSP или скачивает список отзыва CRL. Но что делать, если этот канал недоступен: сервер закрыт файрволом, изолированная сеть не имеет выхода в интернет, ЦС прекратил работу или соединение блокируется? Полностью надёжной замены онлайн-проверке нет, однако есть несколько рабочих способов получить или восстановить данные об отзыве локально. Главный принцип: чем свежее локальная копия данных об отзыве, тем ниже риск принять отозванный сертификат за действительный.
Ниже разберём, какие механизмы проверки существуют, как они работают без прямого доступа к серверу ЦС, какие у каждого способа ограничения и как выстроить процесс так, чтобы изолированная среда не превратилась в слепую зону безопасности.
- Зачем вообще проверять отзыв и что происходит без проверки
- Основные механизмы проверки статуса сертификата
- Способ 1. Предварительная загрузка списков CRL
- Способ 2. Кэширование и проксирование ответов OCSP
- Способ 3. OCSP stapling — когда ответственность переносится на сервер
- Способ 4. Локальные центры сертификации и собственные точки распространения
- Что делать при полном отсутствии свежих данных об отзыве
- Типичные ошибки при организации офлайн-проверки
- Как выбрать подходящий вариант под вашу ситуацию
- Практические рекомендации
Зачем вообще проверять отзыв и что происходит без проверки
Сертификат подтверждает привязку открытого ключа к имени (домена, организации, человека). Отзыв означает, что эта привязка перестала быть доверенной: например, закрытый ключ утёк, домен сменил владельца, сертификат выпущен ошибочно. Если клиент не проверяет статус, он продолжит доверять скомпрометированному ключу до конца срока действия сертификата — а это может быть месяцы.
На практике большинство систем настроены «мягко»: если проверить статус не удалось, соединение всё равно разрешается (режим soft-fail). Это осознанный компромисс ради доступности, но именно он создаёт проблему: в изолированной сети проверка молча отключается, и никто этого не замечает, пока не случится инцидент.
Основные механизмы проверки статуса сертификата
Прежде чем говорить о работе без доступа к ЦС, важно понимать, откуда вообще берутся данные об отзыве. Их источник всегда один — сам центр сертификации, но способы доставки данных различаются.
| Механизм | Как работает | Требует сеть до ЦС | Особенность |
|---|---|---|---|
| CRL | Клиент скачивает подписанный список отозванных серийных номеров | Да, периодически | Файл можно заранее загрузить и использовать офлайн |
| OCSP | Клиент отправляет запрос о статусе одного сертификата и получает подписанный ответ | Да, на каждый запрос | Актуальность выше, но нужна связь с ответчиком OCSP |
| OCSP stapling | Владелец сертификата сам получает подписанный ответ OCSP и передаёт его клиенту вместе с сертификатом | Нет, со стороны клиента | Клиенту достаточно проверить подпись ответа |
| Локальный кэш / зеркало | CRL и ответы OCSP загружаются заранее прокси-сервером или скриптом синхронизации | Нет, если синхронизация настроена | Данные ограничены сроком годности (nextUpdate) |
Из этой таблицы видно ключевое: полностью «оторваться» от ЦС нельзя — данные об отзыве в любом случае им подписываются. Но можно разорвать зависимость в момент проверки, получив данные заранее или через посредника.
Способ 1. Предварительная загрузка списков CRL
CRL — это подписанный файл, обычно в формате DER или PEM, который публикуется по адресу, указанному в расширении сертификата (CRL Distribution Points). Файл содержит список отозванных серийных номеров, дату выпуска и дату следующего обновления (nextUpdate).
Именно формат файла делает CRL удобным для изолированных сетей: его можно скачать один раз на машине с доступом в интернет, перенести на носителе или через контролируемый шлюз и использовать локально.
- Определите адреса распространения CRL для всех сертификатов, которые используются в изолированном сегменте. Адреса видны в самом сертификате — их можно посмотреть любым просмотрщиком сертификатов или командой OpenSSL (openssl x509 -text -noout).
- Настройте регулярную загрузку этих файлов во внешнем контуре: вручную по расписанию, через отдельный скрипт или систему управления конфигурациями.
- Перенесите файлы внутрь изолированной сети и настройте локальную службу, которая будет отдавать их вашим приложениям — например, внутренний HTTP-сервер, эмулирующий точку распространения CRL.
- Убедитесь, что приложения проверяют подпись CRL ключом ЦС и учитывают поле nextUpdate: просроченный список либо должен блокировать проверку, либо явно помечаться как устаревший по решению владельца системы.
Главное ограничение CRL — интервал публикации. Если ЦС обновляет список раз в сутки, то отзыв, произошедший час назад, в вашем локальном файле ещё не появится. Для высокорисковых сценариев это может быть неприемлемо, поэтому уточните у оператора ЦС периодичность выпуска CRL и закладывайте этот лаг в оценку риска.
Способ 2. Кэширование и проксирование ответов OCSP
OCSP даёт более свежий статус: клиент спрашивает «действителен ли сертификат с таким серийным номером» и получает подписанный ответ. Без сети до ответчика OCSP прямой запрос невозможен, но есть два обходных пути.
Первый путь — кэширующий прокси. Внутри периметра поднимается сервис, который принимает OCSP-запросы от приложений, а ответы берёт из кэша, обновляемого внешним контуром. Схема та же, что с CRL: внешний компонент ходит в интернет, внутренний — только к прокси. Ответы OCSP имеют ограниченный срок жизни (поля thisUpdate/nextUpdate), поэтому частота синхронизации должна соответствовать этому сроку.
Второй путь — предзапрос статусов. Если набор используемых сертификатов известен и ограничен (например, это сертификаты нескольких внутренних сервисов), можно заранее запросить их статусы, сохранить ответы и раздавать их локально. Это работает, пока набор сертификатов стабилен; при появлении новых сертификатов процедуру нужно повторить.
Способ 3. OCSP stapling — когда ответственность переносится на сервер
Stapling меняет направление трафика: не клиент идёт к ответчику OCSP, а владелец сертификата периодически получает подписанный ответ и «прикалывает» его к TLS-рукопожатию. Клиенту остаётся только проверить подпись ответа и его срок годности — сетевого доступа к ЦС ему не требуется.
Это самый чистый вариант для изолированных клиентов, но он работает только при выполнении условий:
- сервер, к которому подключается клиент, действительно настроен на stapling и успешно получает ответы от ЦС;
- клиент настроен требовать stapled-ответ, а не принимать его опционально — иначе отсутствие ответа пройдёт незамеченным;
- сертификат сервера имеет расширение OCSP Must-Staple, если вы хотите жёстко гарантировать наличие ответа (поддержку этого расширения стоит уточнить у вашего ЦС до внедрения).
Если сервер внутри той же изолированной сети и сам не имеет выхода к ответчику OCSP, stapling не спасает: проблема просто перемещается на уровень сервера. Тогда серверу нужен тот же механизм предварительной загрузки ответов, что описан выше.
Способ 4. Локальные центры сертификации и собственные точки распространения
Для внутренних сервисов часто разумнее вообще не зависеть от внешних ЦС. Собственный корпоративный ЦС позволяет разместить точки распространения CRL и ответчик OCSP внутри периметра — тогда проверка отзыва работает штатно без какого-либо доступа наружу.
Это решение стоит рассматривать, если изолированная сеть постоянная, а не временная. Потребуется спланировать:
- размещение CDP и AIA-адресов так, чтобы они были доступны из всех сегментов, где живут клиенты;
- регламент выпуска CRL с приемлемой частотой обновления;
- резервирование ответчика OCSP, если от него зависит работа критичных сервисов;
- процедуру экстренного выпуска CRL при компрометации ключа — она должна отработать быстрее обычного цикла.
Что делать при полном отсутствии свежих данных об отзыве
Иногда данных нет вовсе: ЦС ликвидирован, архивы CRL утеряны, а решения приходится принимать сейчас. Это худший сценарий, и здесь честнее всего признать: технически проверить отзыв невозможно. Остаётся организационная компенсация:
- оценить критичность каждого сертификата: где он используется, какой ущерб принесёт компрометация;
- для высокорисковых сертификатов — досрочно перевыпустить их у нового доверенного ЦС вместо попыток подтвердить статус старых;
- сократить сроки доверия: временно ужесточить политику, ограничить срок действия принимаемых сертификатов;
- зафиксировать решение и его обоснование документально — это важно и для аудита, и для последующего разбора инцидентов.
Типичные ошибки при организации офлайн-проверки
- Использование просроченных CRL без контроля. Если приложение молча принимает список с истёкшим nextUpdate, формально проверка выполняется, фактически — нет. Настройте явную обработку устаревших данных: блокировку или предупреждение по вашему выбору.
- Отсутствие мониторинга синхронизации. Скрипт загрузки CRL ломается, никто не замечает, и через неделю все проверки идут по недельной давности данным. Нужен контроль возраста файлов и алерт при превышении порога.
- Проверка только цепочки, но не статуса. Валидность подписи и срока действия сертификата не отменяет необходимости проверки отзыва — это разные проверки.
- Игнорирование промежуточных сертификатов. Отзывать могут не только конечные сертификаты, но и промежуточные ЦС. Их статусы тоже нужно проверять, иначе отзыв корневым ЦС промежуточного звена останется незамеченным.
- Настройка soft-fail «по умолчанию и навсегда». Режим «не смогли проверить — пропускаем» уместен там, где доступность важнее строгости, но он должен быть осознанным решением с оценкой риска, а не случайным дефолтом.
Как выбрать подходящий вариант под вашу ситуацию
| Ситуация | Рекомендуемый подход |
|---|---|
| Полностью изолированная сеть, стабильный набор внешних сертификатов | Предварительная загрузка CRL + кэш OCSP-ответов с контролем свежести |
| Клиенты подключаются к серверам, имеющим выход к ЦС | OCSP stapling с обязательной проверкой наличия ответа на клиенте |
| Постоянный внутренний периметр со своими сервисами | Собственный ЦС с внутренними CDP и OCSP-ответчиком |
| Временное отключение связи, короткий период | Использование последних актуальных CRL с фиксацией лага данных и повышенным вниманием к критичным сертификатам |
| Данные об отзыве недоступны принципиально | Организационные меры: переиздание критичных сертификатов, сокращение сроков доверия, документирование решений |
Практические рекомендации
Начните с инвентаризации: составьте список всех сертификатов, которые ваши системы принимают и предъявляют, и для каждого определите, где находятся его точки распространения CRL и OCSP. Без этой карты любые дальнейшие шаги будут фрагментарными.
Затем оцените два параметра, которые определяют выбор решения: допустимый лаг данных об отзыве (сколько часов или дней устаревания вы готовы принять) и критичность сервисов, завязанных на каждый сертификат. Для большинства внутренних задач суточного обновления CRL достаточно; для систем, где компрометация ключа означает прямой финансовый ущерб, лаг должен измеряться минутами — и тогда без OCSP или stapling не обойтись.
И последнее: любая офлайн-схема живёт ровно столько, сколько поддерживается её регламент. Назначьте ответственного за синхронизацию данных, настройте контроль возраста файлов и периодически тестируйте схему — например, искусственно добавив тестовый сертификат в список отзыва и убедившись, что клиенты его отклоняют.
Материал носит информационный характер и описывает общие подходы к проверке статуса сертификатов. Конкретные настройки зависят от вашей инфраструктуры, требований регуляторов и политики безопасности организации; ответственные решения по PKI рекомендуется принимать с привлечением профильного специалиста по информационной безопасности.
