OCSP
OCSP (Online Certificate Status Protocol, RFC 6960) — способ проверить не отозван ли сертификат через HTTP-запрос к серверу CA. Замена медленному CRL.
Как работает базовый OCSP
- Браузер подключается к сайту, получает TLS-сертификат.
- В серте указан URL OCSP-responder-а CA (в extension
Authority Information Access). - Браузер шлёт HTTP-запрос:
GET /ocsp/... HTTP/1.1с serial number серта. - Responder отвечает:
good·revoked·unknown. Ответ подписан CA. - Если
revoked— браузер отказывает.
Проблемы базового OCSP
- Утечка приватности. Каждый визит на HTTPS-сайт → запрос к CA-серверу с URL. CA видит куда ты ходишь.
- Тормоза. Дополнительный round-trip перед началом соединения (100+ ms).
- Soft-fail. Если OCSP-responder упал — браузер идёт дальше, «сойдёт». Атакующему остаётся заблокировать OCSP-трафик и просроченный/отозванный серт «пройдёт».
- Массовая нагрузка. Miliardы OCSP-запросов в день. Дорого для CA.
OCSP Stapling
Решение проблем: сервер сам периодически запрашивает OCSP-ответ у CA и «прикрепляет» его к TLS-handshake (Certificate Status extension).
- Каждые несколько часов веб-сервер:
curl ocsp.ca.com, кэширует ответ. - Клиент подключается — сервер возвращает cert + свежий OCSP-ответ вместе.
- Клиент не ходит в CA, приватность сохранена, лаг ноль.
# nginx
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8;
OCSP Must-Staple
Extension в серте id-pe-tlsfeature: «этот серт валиден только если stapling есть». Если сервер не прислал OCSP — браузер отклоняет. Убирает soft-fail-проблему полностью.
На практике почти не используется — сложно эксплуатировать, риск ложного отказа.
Смерть OCSP
В 2024 CA/Browser Forum сделал OCSP опциональным для всех CA. С 2025 Let's Encrypt объявила о постепенном отключении OCSP-responder. Возвращается CRL (через централизованные списки-агрегаторы вроде CRLite и Chrome CRLSet).
Причины смерти OCSP:
- Утечка приватности не решена.
- Дорогая инфраструктура для CA.
- Chrome/Firefox давно не делают onnline-запросы к OCSP — используют встроенные списки отзыва.