Інвентаризація сертифікатів VPN: що може довести реєстр CA
Тека на сервері, реєстр CA, список відкликання та таблиця сеансів відповідають на різні питання. Тримайте їх окремо, коли інвентаризуєте посвідчення VPN.
Ваш шлюз приймає клієнтський сертифікат, якого ніколи не бачив, бо те, чим він налаштований, — це довірений видавець, а сертифікат надходить під час рукостискання. Так протокол і має працювати, і саме тому список теки на сервері — погана інвентаризація. Видавець знає, що створив, сервер знає, що підключилося, а стан відкликання знає, що було відкликано. Інвентаризація, яка змішує ці три записи, зрештою стверджує те, чого не казав жоден із них.
Шлюз довіряє видавцеві, а не списку файлів
Перевірка порівнює поданий сертифікат із якорем довіри, тож посвідчення, створене тим самим видавцем учора, підключається, ніколи не існуючи на диску сервера. Для цього нічого не потрібно копіювати, і ніхто не мусить схвалювати це вручну. Тому власні записи сервера описують надходження, а не сукупність посвідчень, які могли б надійти.
Зворотний розрив такий самий незручний. У теці можуть лежати прострочені сертифікати, відкликані та посвідчення, видані для пристроїв, які так і не були розгорнуті. Підрахунок файлів відповідає, скільки файлів є, а це питання, яке ніхто не ставив. Почніть натомість із записів, які несуть сенс.
Чотири питання, чотири різні реєстри
Кожен тип запису добре відповідає на одне питання і погано на інші, тому звіт, який їх об’єднує, виглядає повним, хоча помиляється в конкретний спосіб. Таблиця нижче впорядковує їх за питанням, яке вони вирішують, а не за системою, яка їх створює.
| Question you are answering | Where the answer lives | How quickly it changes | What it will never show |
|---|---|---|---|
| Was this identity ever created? | The issuer's issuance database | Only when something is issued | Whether the device still exists |
| Is a copy sitting on this host? | The paths you actually inspected | Whenever anyone copies files | Certificates that were never copied here |
| Has the issuer withdrawn it? | Published revocation state | When the issuer next publishes | Withdrawals that are not published yet |
| Is it connected right now? | The live session table | Continuously | Anything 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
Інвентаризація, яка переживе наступний випуск
Разова вивантаження теки застаріває тієї миті, коли випускається наступний сертифікат, тому будуйте звіт із робочого процесу випуску й дозвольте йому оновлюватися як частині звичайної роботи. Це також робить звіт відтворюваним, що важливо, коли двоє людей не згодні щодо того, що було випущено.
Використовуйте результат для рішень про поновлення та виведення з експлуатації, а не як вправу з таблицею. Видалення локальної копії не анулює віддалені копії, які вже існують. Відкличте посвідчення через налаштований робочий процес відкликання й авторизації, потім запишіть відкликання з його датою. Посвідчення, яке зникло із сервера, але видавець досі йому довіряє, не виведено з експлуатації, і саме ця різниця відділяє точну інвентаризацію від просто заспокійливої.