Отзыв сертификата — это процесс аннулирования SSL-сертификата до истечения срока его действия — обычно из-за компрометации закрытого ключа, ошибочной выдачи сертификата или смены владельца домена.
В теории отзыв — это механизм реагирования на инциденты в системе центров сертификации (CA). На практике это самое слабое звено инфраструктуры PKI. Вот почему и что приходит ему на смену.
Когда следует отзывать сертификат
- Закрытый ключ скомпрометирован — утечка, кража или раскрытие (например, случайно закоммичен в публичный Git-репозиторий)
- Сертификат выдан ошибочно — CA выдал сертификат для домена, который вам не принадлежит
- Домен продан — вы больше не владеете доменом, указанным в сертификате
- Смена ключей — вы выполняете ротацию ключей и хотите аннулировать старый сертификат
- Сервер выведен из эксплуатации — сертификат больше не должен быть действительным
Как работает отзыв
CRL (Certificate Revocation List)
Первоначальный механизм отзыва. CA публикует список серийных номеров всех отозванных сертификатов. Браузеры загружают этот список и проверяют сертификат по нему.
Проблемы:
- CRL со временем становятся очень большими (миллионы записей)
- Браузеры должны загрузить весь список, прежде чем проверить любой сертификат
- Медленно и ресурсоёмко — большинство браузеров давно прекратили проверку CRL
OCSP (Online Certificate Status Protocol)
Проверка в реальном времени. Вместо загрузки списка браузер спрашивает OCSP-сервер CA: “Этот сертификат отозван?”
Как это работает:
Browser → OCSP Responder: "Is cert serial #12345 still valid?"
OCSP Responder → Browser: "Good" / "Revoked" / "Unknown"
Проблемы:
- Конфиденциальность — CA знает, какие сайты вы посещаете (он видит каждый OCSP-запрос)
- Задержка — добавляет дополнительный сетевой обмен к каждому новому HTTPS-соединению
- Доступность — если OCSP-сервер недоступен, браузеры обычно применяют мягкую политику (принимают сертификат в любом случае), что делает отзыв неэффективным
OCSP Stapling (улучшенный вариант)
Сервер периодически получает OCSP-ответ и “прикрепляет” его к TLS-рукопожатию. Браузер получает статус отзыва без обращения к CA.
Преимущества:
- Нет утечки конфиденциальности (браузер не обращается к CA)
- Нет дополнительной задержки (ответ включён в рукопожатие)
- Работает даже при медленном или недоступном OCSP-сервере CA
Настройка:
Nginx:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
Apache:
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/apache2/ssl_stapling(128000)"
CRLite (будущее)
CRLite от Mozilla сжимает все известные отзывы в компактный фильтр (~1,5 МБ), который распространяется с обновлениями Firefox. Браузер может проверить статус отзыва локально — без сетевого запроса, утечки конфиденциальности и задержки. По состоянию на 2026 год CRLite включён в Firefox и может быть принят другими браузерами.
Суровая правда об отзыве
На практике отзыв по большей части не работает:
- Chrome не проверяет OCSP и CRL по умолчанию (опирается на собственные CRLSets — курируемое подмножество)
- Safari проверяет OCSP, но с мягкой политикой (принимает сертификаты, если OCSP-сервер недоступен)
- Firefox использует CRLite (лучший подход, но только для Firefox)
- Мягкая политика OCSP означает, что целенаправленный злоумышленник может заблокировать проверку OCSP, и браузер примет отозванный сертификат
Вот почему индустрия движется к короткоживущим сертификатам как основной защите:
| Подход | Как защищает |
|---|---|
| Отзыв (OCSP/CRL) | Аннулирует скомпрометированный сертификат — но проверка ненадёжна |
| Короткий срок действия (90 дней → 47 дней) | Скомпрометированный сертификат быстро истекает — проверка не нужна |
Если сертификат действителен всего 47 дней, украденный ключ полезен максимум 47 дней. Это ограничивает ущерб, даже когда отзыв не работает.
Как отозвать сертификат Let’s Encrypt
Если ваш закрытый ключ скомпрометирован:
# With Certbot
sudo certbot revoke --cert-path /etc/letsencrypt/live/yourdomain.com/cert.pem --reason keycompromise
# With acme.sh
acme.sh --revoke -d yourdomain.com
После отзыва немедленно получите новый сертификат — отзыв не решает проблему, он лишь аннулирует старый сертификат. Используйте GetHTTPS для выпуска нового сертификата с новой парой ключей.
Часто задаваемые вопросы
Стоит ли включать OCSP stapling?
Да. Это не гарантирует проверку отзыва (браузеры могут её игнорировать), но даёт общий положительный эффект: более быстрое TLS-рукопожатие (нет OCSP-запроса на стороне клиента), лучшая конфиденциальность (браузер не обращается к CA), а некоторые браузеры действительно учитывают прикреплённые OCSP-ответы. Включить бесплатно — Nginx и Apache поддерживают это 2-3 строками конфигурации.
Как быстро вступает в силу отзыв?
CRL публикуются периодически (от нескольких часов до дней). OCSP-ответы кэшируются (обычно на 1-4 часа). На практике отозванный сертификат может оставаться “действительным” для некоторых браузеров до 24 часов. Это ещё одна причина, по которой короткоживущие сертификаты приходят на смену отзыву как основному средству защиты.
Нужно ли отзывать сертификат при продлении?
Нет. Получение нового сертификата не требует отзыва старого. Старый сертификат просто истекает. Отзыв необходим только при компрометации закрытого ключа — не при обычном продлении.
Можно ли проверить, отозван ли сертификат?
# Check OCSP status
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status 2>/dev/null | grep "OCSP Response Status"
# "successful" = OCSP stapling is working
# If empty, stapling is not enabled
Или проверьте на crt.sh — отозванные сертификаты отмечены в интерфейсе.