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

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

Проверка сравнивает предъявленный сертификат с якорем доверия, поэтому удостоверение, созданное тем же издателем вчера, подключается, никогда не существуя на диске сервера. Для этого ничего не нужно копировать, и никто не должен утверждать это вручную. Поэтому собственные записи сервера описывают приходы, а не совокупность удостоверений, которые могли бы прийти.

Обратный разрыв так же неудобен. В каталоге могут лежать просроченные сертификаты, отозванные и удостоверения, выданные для устройств, которые так и не были развёрнуты. Подсчёт файлов отвечает, сколько файлов есть, а это вопрос, который никто не задавал. Начните вместо этого с записей, которые несут смысл.

Четыре вопроса, четыре разных реестра

Каждый тип записи хорошо отвечает на один вопрос и плохо на остальные, поэтому отчёт, который их объединяет, выглядит полным, хотя ошибочен определённым образом. Таблица ниже упорядочивает их по вопросу, который они решают, а не по системе, которая их создаёт.

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

Инвентаризация, которая переживёт следующий выпуск

Разовая выгрузка каталога устаревает в тот момент, когда выпускается следующий сертификат, поэтому стройте отчёт из рабочего процесса выпуска и позволяйте ему обновляться как части обычной работы. Это также делает отчёт воспроизводимым, что важно, когда два человека не согласны в том, что было выпущено.

Используйте результат для решений о продлении и выводе из эксплуатации, а не как упражнение с таблицей. Удаление локальной копии не аннулирует удалённые копии, которые уже существуют. Отзовите удостоверение через настроенный рабочий процесс отзыва и авторизации, затем запишите отзыв с его датой. Удостоверение, исчезнувшее с сервера, но по-прежнему пользующееся доверием издателя, не выведено из эксплуатации, и именно это различие отделяет точную инвентаризацию от просто успокаивающей.

Похожие статьи