ПМИ_реестры_сертификатов_УНЭП_А.3_v01_draft
А.3 Проверка создания распределённых реестров данных о сертификатах УНЭП и событиях жизненного цикла сертификатов УНЭП
Настоящая методика обеспечивает проверку реализации требований, изложенных в ЧТЗ п. 4.2.3, в соответствии с пунктами /4.2.2.1, 4.2.2.5, 4.2.2.11 Заявки № ИЭП-1.
Проверки выполняются вызовами методов REST API и наблюдением базы глобального состояния. Во всех шагах проверок действует единственная роль — демонстрирующий; иные роли не предусмотрены. Вызовы методов приватных каналов неквалифицированных сертификатов выполняются от имени УЦ-владельца канала; вызовы методов публичного канала — от имени участника канала, имеющего доступ на чтение. Функции доступны в среде развёртывания; IP-адрес среды указывается при подготовке испытаний и приводится в протоколе испытаний (Приложение Б).
Структура настоящего раздела повторяет структуру раздела А.2 с заменой каналов, методов и проверок на соответствующие сертификатам УНЭП; различия между разделами А.2 и А.3 явно указаны в проверках. Ключевое отличие сценария УНЭП: проверка аккредитации издателя не выполняется ни при внесении сведений о сертификате, ни при определении статуса сертификата на заданную дату и периодов действия.
Предварительные условия: развёрнут тестовый стенд; развёрнуты каналы неквалифицированных сертификатов (канал сертификатов издателей Госключ, приватный канал неквалифицированных сертификатов Госключ) и публичный канал сертификатов УЦ; демонстрирующему предоставлены тестовые сертификаты УНЭП (корневой и промежуточный сертификаты издателей Госключ, конечные сертификаты УНЭП — корректные и с заведомыми нарушениями формата), ключ доступа к REST API и учётные данные для подключения к базе глобального состояния (DBeaver).
А.3.1 Проверка создания записи о сертификате УНЭП в приватном канале
Проверка открывает сценарий испытаний сертификатов УНЭП: к её выполнению запись о тестовом сертификате в реестре отсутствует, поэтому регистрация проводится на корректном сертификате УНЭП, выданном в инфраструктуре Госключ. Подтверждается приём сертификата через REST API: корректный запрос обрабатывается, в ответе возвращается идентификатор записи вида «дата начала действия;hashTBS». Альтернативные шаги доказывают защиту от повторной регистрации (ERR-0721) и от пустого запроса (ERR-0010). Отличие от проверки А.2.1 — используемые методы: POST /certificate/unqual/create (приватный канал неквалифицированных сертификатов Госключ) и POST /certificate/goskey/create (канал сертификатов издателей Госключ, для сертификатов издателей).
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале» ( | HTTP 200; возвращён идентификатор вида |
2 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале» ( | HTTP 200; возвращён идентификатор вида |
3 | (альтернативный к шагу 1) Действие: Повторно выполнить запрос с тем же сертификатом | Запрос отклонён; возвращён код ошибки ERR-0721 (сертификат с таким _id уже существует в реестре). |
4 | (альтернативный к шагу 1) Действие: Выполнить запрос с пустым телом | Запрос отклонён; возвращён код ошибки ERR-0010. |
А.3.2 Проверка форматно-логического контроля сведений о сертификате УНЭП
Проверка подтверждает, что сведения о сертификате УНЭП при внесении подвергаются декодированию, парсингу и форматно-логическому контролю: некорректное транспортное представление сертификата отклоняется с соответствующим кодом ошибки, а нарушения требований к формату неквалифицированного сертификата не блокируют регистрацию, но фиксируются перечнем предупреждений в записи о сертификате. Отличие от проверки А.2.2 — состав обязательных проверок: вместо проверок типа владельца и полномочий издателя (QCERT) для УНЭП определяется тип сертификата (ROOT_CA, SUB_CA, END_ENTITY) и проверяется соответствие профилю этого типа (UNQCERT). Предупреждения наблюдаются в записи о сертификате при проверке А.3.7.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав PEM-сертификат с искажённым телом BASE64 | Запрос отклонён; возвращён код ошибки ERR-0704 либо ERR-0705. |
2 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав сертификат УНЭП конечного пользователя (END_ENTITY) без обязательных расширений (extendedKeyUsage без OID 1.3.6.1.5.5.7.3.4, cRLDistributionPoints) | HTTP 200; возвращён идентификатор записи; в записи о сертификате (проверка А.3.7) поле |
3 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав сертификат, тип которого не удаётся определить по составу полей | HTTP 200; в записи о сертификате поле |
А.3.3 Проверка проверки цепочки доверия при внесении сертификата УНЭП
Проверка опирается на записи реестра, созданные проверкой А.3.1, и подтверждает проверку цепочки доверия: для несамоподписанного сертификата родительские сертификаты запрашиваются — в отличие от проверки А.2.3 — в реестре сертификатов издателей Госключ, а при их отсутствии регистрация отклоняется. Второй шаг подтверждает проверку действительности издателя на дату начала действия сертификата (UNQCERT_PARENT_NOT_VALID_AT_ISSUANCE). Альтернативный шаг доказывает криптографическую проверку: сертификат с неверной электронной подписью отклоняется с кодом ошибки ERR-0722. Проверки аккредитации издателя, предусмотренные для УКЭП (А.2.3, шаг 2), для сертификатов УНЭП не выполняются.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав сертификат УНЭП, родительский сертификат которого отсутствует в реестре сертификатов издателей Госключ | Запрос отклонён; возвращена ошибка «Отсутствует родительский сертификат». |
2 | Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав сертификат УНЭП, чей издатель не был действителен на дату начала действия регистрируемого сертификата | HTTP 200; в записи о сертификате поле |
3 | (альтернативный к шагу 1) Действие: Выполнить запрос «Создать запись о сертификате в приватном канале», передав сертификат УНЭП с неверной электронной подписью | Запрос отклонён; возвращён код ошибки ERR-0722. |
А.3.4 Проверка изменения статуса сертификата УНЭП
Проверка опирается на сертификат, зарегистрированный проверкой А.3.1, и проводит его по предусмотренным статусной моделью переходам: прекращение действия сертификата (событие «2» с указанием причины) и возобновление действия сертификата (событие «3»). Статусная модель, состав событий и коды ошибок — те же, что для сертификатов УКЭП (проверка А.2.4); отличие — используемые методы POST /certificate/unqual/status-update и POST /certificate/goskey/status-update.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос «Изменить статус сертификата в приватном канале» ( | HTTP 200; возвращены сведения о новом событии истории (номер версии увеличен на 1). |
2 | Действие: Выполнить запрос «Изменить статус сертификата в приватном канале» с event = 3 (возобновление действия) и новым | HTTP 200; статус сертификата изменён; в истории зафиксировано событие «3». |
3 | (альтернативный к шагам 1–2) Действие: Выполнить запрос «Изменить статус сертификата в приватном канале» без поля | Запрос отклонён; возвращён код ошибки ERR-0801. |
4 | (альтернативный к шагам 1–2) Действие: Повторно выполнить запрос шага 1 с теми же значениями | Запрос отклонён; возвращён код ошибки ERR-0805 (невозможный переход по статусной модели). |
А.3.5 Проверка логической отмены сертификата УНЭП
Проверка опирается на сертификат, зарегистрированный проверкой А.3.1. Подтверждается функция логической отмены: отмена устанавливает флаг logicalCancelFlag = True; отменённый сертификат переносится в публичный канал с флагом True (проверка А.3.9). Альтернативный шаг подтверждает повторную отмену: запрос отклоняется с кодом ERR-0730.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос «Логическая отмена» ( | HTTP 200; в ответе |
2 | (альтернативный к шагу 1) Действие: Повторно выполнить запрос шага 1 | Запрос отклонён; возвращён код ошибки ERR-0730. |
А.3.6 Проверка получения данных сертификатов по заданному фильтру в приватном канале
Проверка опирается на записи о сертификатах, накопленные проверками А.3.1–А.3.3, и подтверждает метод получения данных по заданному фильтру в приватном канале неквалифицированных сертификатов: по значению параметра фильтрации возвращается перечень идентификаторов сертификатов, удовлетворяющих фильтру, а по идентификатору сертификата — модель сведений о сертификате, объединённая с моделью истории.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос | HTTP 200; возвращён перечень идентификаторов сертификатов, в записях которых поле |
2 | Действие: Выполнить запрос | HTTP 200; возвращена модель сведений о сертификате (Описание решения, п. 4.1.1), объединённая с моделью истории (п. 3.1.2). |
А.3.7 Проверка ведения записи «Сертификат» УНЭП в базе глобального состояния
Способ проверки: наблюдение базы глобального состояния (Описание решения, п. 4.1.1).
Предварительные условия: выполнены проверки А.3.1–А.3.3 (в приватном канале созданы записи о сертификатах, включая записи с предупреждениями); доступ к базе глобального состояния предоставлен.
Проверка подтверждает, что сведения о сертификатах УНЭП, принятые через REST API, доведены до распределённого реестра. Наблюдением записи о сертификате подтверждается её структура: идентификатор записи, хэш TBS, uuid сертификата издателя, сведения из сертификата, исходный сертификат, флаги форматной проверки и логической отмены, перечень предупреждений и служебное поле времени создания. Записи с предупреждениями (результат проверки А.3.2) подтверждают доведение результатов форматно-логического контроля до реестра.
№ | Шаг | Ожидаемый результат |
1 | Действие: Подключиться к базе глобального состояния стенда (DBeaver) | Подключение установлено; база глобального состояния доступна. |
2 | Действие: Выполнить выборку записи о тестовом сертификате и проверить её структуру (Описание решения, п. 4.1.1) | Запись содержит: |
3 | Действие: Проверить сведения о типе сертификата в записи, созданной проверкой А.3.2 | Тип сертификата, определённый при проверках (ROOT_CA / SUB_CA / END_ENTITY), зафиксирован в записи о сертификате. |
А.3.8 Проверка ведения истории изменения статуса сертификата УНЭП
Способ проверки: наблюдение базы глобального состояния (Описание решения, п. 3.1.2).
Предварительные условия: выполнены проверки А.3.1, А.3.4; доступ к базе глобального состояния предоставлен.
Проверка опирается на события, сформированные запросами сценария (проверки А.3.1, А.3.4), и подтверждает накопление событий в истории с возрастающими номерами версий. Идентификатор записи истории формируется как комбинация uuid сертификата и суффикса HIST. Сформированная история является основой для получения статуса сертификата на заданную дату (проверка А.3.11) и периодов действия (проверка А.3.12).
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить выборку записи истории изменения статуса тестового сертификата | Запись содержит: |
2 | Действие: Проверить состав событий в массиве | События содержат: |
А.3.9 Проверка переноса сведений о сертификате УНЭП в публичный канал
Способ проверки: наблюдение базы глобального состояния публичного канала (Описание решения, п. 4.2).
Предварительные условия: выполнены проверки А.3.1, А.3.4, А.3.5; доступ к базе глобального состояния предоставлен.
Проверка подтверждает автоматический перенос сведений из приватного канала в публичный канал сервисом-ретранслятором ЕСИА: в публичном канале создаётся запись о сертификате с усечённым составом полей — без персональных данных владельца и без самого сертификата, а события изменения статуса и логическая отмена переносятся в запись истории публичного канала. Отличие от проверки А.2.9: для сертификатов УНЭП, издатель которых не имеет ОГРН, поле issuerOGRN в записи публичного канала пустое.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить выборку записи о тестовом сертификате в публичном канале | Запись содержит: |
2 | Действие: Проверить отсутствие в записи персональных данных и самого сертификата | В записи публичного канала отсутствуют поля |
3 | Действие: Выполнить выборку записи истории изменения статуса тестового сертификата в публичном канале | Запись истории содержит события, перенесённые из приватного канала, включая событие «1» (начало действия); для логически отменённого сертификата в записи о сертификате |
А.3.10 Проверка получения истории статуса сертификата УНЭП
Проверка опирается на запись сертификата в публичном канале (проверка А.3.9) и подтверждает метод получения истории статуса: возвращаются все события изменения статуса сертификата, накопленные в публичном канале. Альтернативный шаг подтверждает обработку запроса по сертификату, отсутствующему в реестре: запрос отклоняется с кодом ошибки ERR-0729.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос | HTTP 200; возвращена история изменения статуса сертификата: все события (versionStatus, updatedAt, event, reason, createdAtCC). |
2 | (альтернативный к шагу 1) Действие: Выполнить запрос | Запрос отклонён; возвращён код ошибки ERR-0729. |
А.3.11 Проверка получения статуса сертификата УНЭП на заданный момент времени
Предварительные условия: выполнены проверки А.3.1–А.3.5, А.3.9 (сформированы история изменения статуса тестового сертификата и запись в публичном канале).
Проверка подтверждает представление статуса сертификата УНЭП на заданный момент времени: статус определяется по истории событий (для даты проверки выбирается запись с максимальным updatedAt, не превышающим дату проверки). Отличие от проверки А.2.11 — обращение к реестру аккредитации не выполняется и поле accreditationStatus не определяется: итоговый статус учитывает только статусы сертификатов цепочки доверия. Возвращаются сведения по проверяемому сертификату, промежуточному и корневому сертификатам цепочки, статус секретного ключа и итоговый статус.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос | HTTP 200; для даты проверки возвращены: |
2 | Действие: Выполнить запрос с датой проверки, на которую сертификат был прекращён (после события «2») | HTTP 200; |
3 | Действие: Выполнить запрос с датой проверки, предшествующей дате начала действия сертификата | HTTP 200; |
4 | (альтернативный к шагу 1) Действие: Выполнить запрос по сертификату, отсутствующему в реестре | Запрос отклонён; возвращён код ошибки ERR-0729. |
А.3.12 Проверка получения периодов действия сертификата УНЭП
Предварительные условия: сформирована история изменения статуса тестового сертификата (проверки А.3.1, А.3.4).
Проверка завершает сценарий и подтверждает представление периодов действия сертификата: периоды вычисляются по истории изменения статуса и пересечению периодов действия сертификатов цепочки доверия. Отличие от проверки А.2.12 — проверка статуса аккредитации издателя не выполняется, и для сертификатов УНЭП период действия не зависит от аккредитации. Результат подтверждает, что сведения, последовательно внесённые в реестр запросами сценария, доступны потребителям в сводном виде.
№ | Шаг | Ожидаемый результат |
1 | Действие: Выполнить запрос | HTTP 200; возвращён перечень периодов (from/to), вычисленный по истории изменения статуса с учётом пересечения периодов цепочки доверия; первый период начинается с даты начала действия сертификата. |