Файл сертифіката вашого клієнта зник, і рефлекс — відкликати ім'я та випустити новий. Цей рефлекс залишає початковий сертифікат чинним, бо відкликання працює за серійним номером, а не за міткою. 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 документує підтримувані команди для встановленої версії, і це єдиний інтерфейс, якому варто слідувати.

Схожі статті