Потеряли сертификат клиента? Отзывайте по серийному номеру, а не по имени
Пропавший файл сертификата — не пропавшая запись. Отзыв работает по серийному номеру, подписанному CA, поэтому найдите этот объект до выпуска замены.
Файл сертификата вашего клиента исчез, и рефлекс — отозвать имя и выпустить новый. Этот рефлекс оставляет исходный сертификат действительным, потому что отзыв работает по серийному номеру, а не по метке. CA почти наверняка всё ещё хранит копию того, что выпустила, и найти эту копию — вся задача.
Потеря файла — не потеря записи CA
Easy-RSA PKI хранит выпущенные открытые сертификаты, а текущие версии также архивируют копии по серии в каталоге certs_by_serial внутри PKI. Закрытый ключ для отзыва не нужен. Важен именно тот сертификат, который подписала CA, и он у CA уже есть.
Работайте на резервной копии правильной PKI вместе с администратором, который ею владеет. Отзыв — это проверяемая операция, а не ремонт производственной базы в полночь.
Копия встроенного открытого сертификата клиента тоже подойдёт, если развёртывание её сохранило.
Сначала прочитайте издателя и серию
Изучите восстановленный PEM и запишите издателя, серийный номер, субъект и срок действия. Серийный номер уникален в пределах одного издателя, а не среди всех CA вашей среды, поэтому издатель — часть идентичности. Если несколько сертификатов имеют один субъект, различить их помогают именно серии.
Сверьте значения с записями CA и с устройством или человеком, у которого, по вашему мнению, находится сертификат.
Общее имя можно использовать повторно, и обычно так и делают. Не решайте, какие сертификаты отозвать, пока серии не записаны.
Почему отзыв нового сертификата ничего не даёт
Выпуск замены с тем же общим именем создаёт второй сертификат с другой серией. Отзыв замены отзывает новый и оставляет исходный действительным до истечения срока. С точки зрения CA это два независимых объекта, а CRL перечисляет серии, а не имена. Индекс CA держит по одной строке на каждый выпущенный сертификат именно поэтому.
Та же путаница порождает обратную ошибку: удалить файл клиента и предположить, что CA о нём забыла. Удаление на клиенте не является событием отзыва, и сертификат продолжает работать у всех, у кого есть копия.
Обе ошибки происходят из отношения к имени как к идентичности.
Отзовите сертификат, который называет серия
Определите объект, прежде чем трогать CA: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates печатает четыре значения за один проход, и серия — это то, что вы сверяете с архивом CA. Easy-RSA хранит этот архив в pki/certs_by_serial, по одному файлу на каждую серию. Команда отзыва принимает общее имя, а не серию, поэтому скопируйте архивный файл в pki/issued/<common-name>.crt и позвольте имени указывать на определённый объект. Запустите easyrsa revoke <common-name> из каталога PKI, затем проверьте, что соответствующая строка в index.txt сменилась на R. Серия — это способ выбрать объект, а не аргумент, который принимает команда.
openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates
cp pki/certs_by_serial/A1B2C3D4.pem pki/issued/client-01.crt
./easyrsa revoke client-01
grep -n client-01 pki/index.txt
./easyrsa gen-crl
Если index.txt не показывает R, остановитесь и прочитайте ошибку до создания CRL, потому что CRL, построенный из ещё действительной записи, ничего не отзывает. Только после смены строки вы запускаете easyrsa gen-crl и переходите к распространению файла.
Публикуйте CRL там, где он действительно применяется
Создайте новый CRL через поддерживаемый рабочий процесс PKI, затем опубликуйте его у каждого проверяющего, который применяет отзывы этого издателя.
Обновлённый файл, лежащий на CA, ничего не меняет, потому что VPN завершает решение на собственном проверяющем. Проверьте издателя CRL, срок его действия и отозванные серии, а также убедитесь, что служба перечитывает файл, а не кэширует предыдущий. Владелец и путь важны не меньше содержимого: CRL, который демон не может прочитать, неотличим от отсутствия CRL. Опция crl-verify в OpenVPN называет файл, который читает демон, поэтому проверьте этот путь и владельца файла в конфигурации сервера.
Проверяйте реальной попыткой подключения, а не отметкой времени файла.
Знайте, когда CRL — неподходящий инструмент
Если закрытому ключу издателя больше не доверяют, отзыв известных серий не помешает несанкционированному владельцу подписывать новые сертификаты. Это переход доверия к издателю, то есть новый CA и план распространения, а не ещё одна запись в CRL. Наличие доступа у бывшего администратора само по себе не доказывает злоупотребление ключом, поэтому сначала установите факты, а затем восстанавливайте доверие.
Ручное редактирование базы выпуска, чтобы перевернуть букву статуса, не заменяет подписанный отзыв и оставляет CRL несогласованным с записями.
Держите серию, CRL и шаг распространения в одной заметке, и следующий аудит станет чтением. Проект Easy-RSA документирует поддерживаемые команды для установленной версии, и это единственный интерфейс, которому стоит следовать.