Изгубен клиентски сертификат? Отменете по сериен номер, не по име
Липсващият файл на сертификат не е липсващ запис. Отмяната работи по серийния номер, който 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 документира поддържаните команди за инсталираната от вас версия и това е единственият интерфейс, който си струва да следвате.