Отзыв сертификата — процедура досрочного аннулирования SSL/TLS-сертификата до истечения его срока действия. Причины: компрометация приватного ключа, смена реквизитов организации, закрытие домена, ошибка при выпуске. Центр сертификации (CA) фиксирует факт отзыва, а браузеры и клиенты проверяют статус сертификата при установке TLS-соединения.
CRL — Certificate Revocation List
CRL — подписанный CA файл со списком серийных номеров отозванных сертификатов. URL для скачивания CRL указан в поле сертификата CRL Distribution Points (CDP). Браузер загружает файл и сверяет серийный номер проверяемого сертификата. Если номер присутствует — сертификат недействителен.
Недостатки CRL: файл обновляется раз в 24–72 часа, поэтому информация может устаревать. Крупные CA выпускают CRL размером 1–50 МБ — их загрузка замедляет TLS-рукопожатие. Chrome отказался от онлайн-проверки CRL ещё в 2012 году в пользу собственного механизма CRLSets, получаемого через обновления браузера.
OCSP — Online Certificate Status Protocol
OCSP (RFC 2560, 1999) — протокол точечного запроса статуса одного конкретного сертификата. Клиент отправляет серийный номер на OCSP Responder CA и получает ответ: good, revoked или unknown. Ответ действителен от нескольких часов до нескольких дней (задаётся в поле nextUpdate).
Проблема OCSP: OCSP-сервер CA получает информацию о каждом TLS-соединении пользователя — это нарушение приватности. Также OCSP добавляет задержку 50–200 мс при первом подключении к сайту.
OCSP Stapling
OCSP Stapling (RFC 6066, 2011) — решение обеих проблем. Веб-сервер сам периодически опрашивает OCSP Responder и прикрепляет (staples) подписанный ответ к TLS-рукопожатию. Браузер проверяет подпись CA на ответе без контакта с внешним сервером. Конфигурация для Nginx:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
ssl_trusted_certificate /etc/ssl/chain.pem;
Для Apache: директива SSLUseStapling on в глобальной конфигурации + SSLStaplingCache. Let's Encrypt рекомендует включать OCSP Stapling для всех продакшн-сайтов.
История
CRL появился как часть стандарта X.509 v2 в 1993 году. OCSP стандартизирован в RFC 2560 в 1999 году. OCSP Stapling описан в RFC 6066 в 2011 году и RFC 8954 в 2020-м. В 2020 году CA Entrust массово отозвал более 50 000 сертификатов из-за ошибки в системе валидации — крупнейший единовременный отзыв в истории. В 2023 году Apple, Mozilla и Google анонсировали переход к ACME-экосистеме с короткоживущими 90-дневными сертификатами (Let's Encrypt) — при сроке жизни 90 дней ущерб от задержки отзыва минимален.
Soft-fail vs Hard-fail
Браузеры реализуют два подхода при недоступности OCSP-сервера: soft-fail (считать сертификат валидным, пока ответ недоступен) и hard-fail (заблокировать соединение). Chrome и Firefox используют soft-fail — иначе недоступность OCSP CA привела бы к массовым сбоям. Только HSTS-preload + Certificate Transparency дают практически полную защиту от использования отозванных сертификатов.
На что обращать внимание при работе с сертификатами
При компрометации ключа: немедленно запросить отзыв через личный кабинет CA или через ACME API. Выпустить новый сертификат с новой парой ключей — старый закрытый ключ не использовать нигде. Включить OCSP Stapling на сервере — это снизит задержку TLS-рукопожатия на 50–150 мс. Проверить наличие полной цепочки сертификатов в конфигурации сервера.