Ваш шлюз приймає клієнтський сертифікат, якого ніколи не бачив, бо те, чим він налаштований, — це довірений видавець, а сертифікат надходить під час рукостискання. Так протокол і має працювати, і саме тому список теки на сервері — погана інвентаризація. Видавець знає, що створив, сервер знає, що підключилося, а стан відкликання знає, що було відкликано. Інвентаризація, яка змішує ці три записи, зрештою стверджує те, чого не казав жоден із них.

Шлюз довіряє видавцеві, а не списку файлів

Перевірка порівнює поданий сертифікат із якорем довіри, тож посвідчення, створене тим самим видавцем учора, підключається, ніколи не існуючи на диску сервера. Для цього нічого не потрібно копіювати, і ніхто не мусить схвалювати це вручну. Тому власні записи сервера описують надходження, а не сукупність посвідчень, які могли б надійти.

Зворотний розрив такий самий незручний. У теці можуть лежати прострочені сертифікати, відкликані та посвідчення, видані для пристроїв, які так і не були розгорнуті. Підрахунок файлів відповідає, скільки файлів є, а це питання, яке ніхто не ставив. Почніть натомість із записів, які несуть сенс.

Чотири питання, чотири різні реєстри

Кожен тип запису добре відповідає на одне питання і погано на інші, тому звіт, який їх об’єднує, виглядає повним, хоча помиляється в конкретний спосіб. Таблиця нижче впорядковує їх за питанням, яке вони вирішують, а не за системою, яка їх створює.

Question you are answeringWhere the answer livesHow quickly it changesWhat it will never show
Was this identity ever created?The issuer's issuance databaseOnly when something is issuedWhether the device still exists
Is a copy sitting on this host?The paths you actually inspectedWhenever anyone copies filesCertificates that were never copied here
Has the issuer withdrawn it?Published revocation stateWhen the issuer next publishesWithdrawals that are not published yet
Is it connected right now?The live session tableContinuouslyAnything about past or future sessions

Архів відкритих сертифікатів не є таємницею, оскільки не містить закритих ключів, але й не підлягає поширенню. Суб’єкти та назви пристроїв розкривають операційні подробиці, і звіт має залишатися в тієї аудиторії, якій він потрібен. Закриті ключі залишаються повністю поза інвентаризацією, бо їй потрібні метадані, а не облікові дані.

Видавець і серійний номер — єдиний стабільний ключ

Суб’єкти перевикористовуються, а назви файлів застосовуються повторно, тож назва, яка торік позначала один пристрій, тепер може позначати інший. Ні те, ні інше не є ключем, і звіт, побудований на будь-чому з них, зрештою зведе два посвідчення в один рядок.

Пара видавець і серійний номер однозначно ідентифікує сертифікат, і обидва поля походять із самого сертифіката. Запишіть їх разом із суб’єктом, датами чинності, джерелом, звідки надійшла копія, та відповідальною особою або пристроєм. Додайте стан відкликання й розгортання окремими полями з власними часами спостереження, бо сертифікат у межах вікна чинності не стає автоматично дозволеним. Ці два факти живуть у різних системах, і їхнє злиття приховує випадок, коли посвідчення відкликано, а його файл усе ще виглядає актуальним.

Читайте по одному сертифікату

Шаблон, що розгортається текою, не є пакетним інтерфейсом, і він приховує, який файл дав який вивід. Читайте метадані по кожному сертифікату, а бік відкликання читайте з його власного артефакту. Довідка OpenSSL x509 перелічує поля, які друкують ці параметри.

openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40

Для керованого PKI Easy-RSA запитуйте базу даних випуску через робочий процес, який підтримує інструмент, замість того щоб припускати структуру тек, і тримайте оригінали лише для читання, поки збирається інвентаризація. Формат реєстру достатньо регулярний, щоб підрахувати чинні записи й перелічити відкликані, не відкриваючи базу вручну.

grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5

Інвентаризація, яка переживе наступний випуск

Разова вивантаження теки застаріває тієї миті, коли випускається наступний сертифікат, тому будуйте звіт із робочого процесу випуску й дозвольте йому оновлюватися як частині звичайної роботи. Це також робить звіт відтворюваним, що важливо, коли двоє людей не згодні щодо того, що було випущено.

Використовуйте результат для рішень про поновлення та виведення з експлуатації, а не як вправу з таблицею. Видалення локальної копії не анулює віддалені копії, які вже існують. Відкличте посвідчення через налаштований робочий процес відкликання й авторизації, потім запишіть відкликання з його датою. Посвідчення, яке зникло із сервера, але видавець досі йому довіряє, не виведено з експлуатації, і саме ця різниця відділяє точну інвентаризацію від просто заспокійливої.

Схожі статті