Показать/Скрыть содержание

    Сервис хранения CRL (CRLS)

    Сервис хранения CRL (CRL Storage, CRLS) входит в состав КриптоПро SVS и представляет собой сервис, позволяющий получать информацию о наличии записи о сертификате в сохраненных ранее списках отозванных сертификатов (CRL).

    Архитектура CRLS

    • *nix
    • Windows

    CRLS в *nix-системах представляет собой набор сервисов под управлением systemd.

    Взаимодействие с CRLS производится через веб-сервер. В данном руководстве рекомендована настройка веб-сервера cpnginx, входящего в состав СКЗИ "КриптоПро CSP 5.0", однако могут быть использованы и другие веб-серверы, например, nginx 1.18.0 и новее.

    Конфигурирование CRLS производится при помощи командлетов. Командлеты могут быть выполнены при помощи утилиты конфигурирования CPShell (обязательно при использовании режима ЗПС в ОС СН Astra Linux SE Смоленск) либо в PowerShell. Установка ПО для конфигурирования описана в разделе установки.

    Расположение файлов CRLS:

    Файлы Расположение
    Путь установки /opt/cprosvs/crlssrv/
    Путь хранения журналов /var/log/cprosvs/crlssrv/cprokey-crlssrv-{{Имя экземпляра сервиса}}*.log (cprokey-crlssrv-{{Имя экземпляра сервиса}}*.clef в случае использования структурированного журналирования)
    Сервисные файлы /etc/systemd/system/cprosvs-crlssrv-{{Имя экземпляра сервиса}}.service
    Конфигурационные файлы /etc/opt/cprosvs/crlssrv/{{Имя экземпляра сервиса при создании}}/. В каждой из папок находятся следующие файлы:
    * config.json - настройки экземпляра сервиса,
    * nginx.conf - конфигурация веб-сервера, включаемая в основной файл конфигурации cpnginx,
    * cprokey-{{Имя сервиса}}-{{Имя экземпляра сервиса при создании}}.service - файл сервиса (см. строку выше)
    Файлы для конфигурации веб-сервера * /etc/opt/cprosvs/crlssrv/{{Имя экземпляра сервиса при создании}}/nginx.conf - конфигурация веб-сервера, включаемая в основной файл конфигурации cpnginx,
    * /etc/opt/cprocsp/cpnginx/cpnginx.conf - файл конфигурации cpnginx
    Временные файлы /var/opt/cprosvs/{{Имя сервиса}}/{{Имя экземпляра сервиса при создании}}/

    Имена сервисов и диапазоны портов:

    Сервис Имя сервиса Диапазон портов
    CRLS crlssrv 62500-62999

    CRLS в Windows-системах представляет собой набор веб-сервисов под управлением веб-сервера IIS. Конфигурирование CRLS производится в консоли PowerShell при помощи командлетов.

    Расположение файлов CRLS:

    Файлы Расположение
    Путь установки C:\Program Files\Crypto Pro\SVS\crlssrv\
    Путь хранения журналов C:\Program Files\Crypto Pro\SVS\crlssrv\log\{{Имя экземпляра сервиса при создании}}\cprokey-crlssrv-{{Имя экземпляра сервиса}}*.log (cprokey-crlssrv-{{Имя экземпляра сервиса}}*.clef в случае использования структурированного журналирования)
    Исполняемые файлы приложений C:\Program Files\Crypto Pro\SVS\crlssrv\bin
    Конфигурационные файлы сервисов C:\Program Files\Crypto Pro\SVS\crlssrv\config\{{Имя экземпляра сервиса при создании}}\config.json
    Временные файлы * C:\Program Files\Crypto Pro\SVS\crlssrv\data\{{Имя экземпляра сервиса при создании}}\

    Установка и развертывание

    Примечание

    Перед установкой убедитесь, что прочее ПО (основные пакеты КриптоПро SVS, КриптоПро CSP, PowerShell и т.д.) уже установлено и настроено согласно основной инструкции по установке и развертыванию КриптоПро SVS.

    Установка

    • *nix
    • Windows

    Перейдите в папку с дистрибутивом КриптоПро SVS cprosvs_*_amd64.tar.gz и распакуйте архив с дистрибутивом, после чего установите пакет Сервиса хранения CRL.

    tar -xf cprosvs_*.tar.gz -C /opt/tmp/svs
    sudo dpkg -i cprosvs-crlssrv__XXX_amd64.deb
    
    # Создайте сервисную учетную запись для CRLS и добавьте в соответствующую группу
    sudo adduser --quiet --system --no-create-home $crlssrvaccname
    sudo usermod -a -G crlssrv $crlssrvaccname
    

    Перейдите в папку с дистрибутивом КриптоПро SVS cprosvs_*_amd64.zip и распакуйте архив с дистрибутивом, после чего запустите пакет с установочными файлами cprosvs-crlssrv_*_amd64.msi.

    Настройка PowerShell

    Запустите PowerShell и получите список доступных модулей:

    sudo pwsh
    get-module -Refresh -ListAvailable
    

    В списке должен присутствовать модуль с названием CryptoPro.CrlStorage.PowerShell. В случае если модуль отсутствует в списке, убедитесь, что файл профиля profile.ps1 существует и заполнен в соответствии с инструкцией по настройке PowerShell для КриптоПро SVS, а также что в данном файле присутствуют учетные данные для подключения к БД.

    Создание и настройка экземпляра сервиса

    1. Запустите PowerShell:

    sudo pwsh
    

    2. Объявите переменные с данными подключения к СУБД:

    Для указания параметров подключения к СУБД используется структура SqlConnectionInfo, а именно следующие поля в ней:

    • ServiceAccountName - имя сервисной учетной записи для подключения к СУБД. Под этой учетной записью к СУБД будет подключаться служба компонента (пул приложений). У данной УЗ будут минимально необходимые права для функционирования сервиса. Указанные в данном поле данные заносятся в строку подключения.
    • ServiceAccountPassword - пароль сервисной учетной записи для подключения к СУБД. Указанные в данном поле данные заносятся в строку подключения.
    • AsUser - имя учетной записи с полными правами (Администратора СУБД) для подключения к СУБД. Указанные в данном поле данные используются только в момент разворачивания экземпляра для подключения к СУБД, в строку подключения не заносятся (в настройках сервиса не сохраняются), но при этом должны быть добавлены в переменные среды (см. раздел про настройку PowerShell).
    • AsUserPassword - пароль учетной записи с полными правами (Администратора СУБД) для подключения к СУБД. Указанные в данном поле данные используются только в момент разворачивания экземпляра, в строку подключения не заносятся (в настройках сервиса не сохраняются), но при этом должны быть добавлены в переменные среды (см. раздел про настройку PowerShell).
    #Подключение к СУБД
    $sql_address = "*.*.*.*:*" # IP-адрес сервера с PostgreSQL и TSP-порт, на котором по умолчанию прослушиваются соединения
    $ServiceAccountName = "postgres" #Имя сервисной учетной записи для подключения к СУБД
    $ServiceAccountPassword = "***" #Пароль сервисной учетной записи для подключения к СУБД
    $AsUser = "postgres-adm" #Имя Администратора СУБД
    $AsUserPassword = "***" #Пароль Администратора СУБД
    

    3. Объявите переменные с наименованием создаваемого экземпляра и папкой для хранения CRL:

    $crlsAppName = 'CrlStorage'
    $crlsFolderPath = '/var/opt/cprosvs/crlssrv/$crlsAppName/FileStorage'
    

    4. Сформируйте строку подключения к БД экземпляра:

    $connInfo = New-CrlsSqlConnectionInfo `
        -ServerName $sql_address `
        -DatabaseName $crlsAppName `
        -DbType postgresql `
        -AsUser $AsUser `
        -AsUserPassword $AsUserPassword `
        -ServiceAccountName $ServiceAccountName `
        -ServiceAccountPassword $ServiceAccountPassword
    

    5. Создайте экземпляр сервиса CRLS:

    Add-CrlsInstance `
        -ConnectionInfo $connInfo `
        -ApplicationName $crlsAppName `
        -DisplayName $crlsAppName `
        -ServiceAccountName $crlssrvaccname
    

    6. Укажите папку для хранения CRL. Необходимо убедиться, что у сервисной учетной записи CRLS $crlssrvaccname есть права на чтение и запись в эту папку. В случае если будет использоваться импорт CRL в указанную папку при помощи командлетов, необходимо также убедиться, что права на чтение и запись также имеются у учетной записи, из-под которой будет запущен PowerShell.

    Set-CrlsProperties -DisplayName $crlsAppName -FileStorageFileSystemFolderPath $crlsFolderPath
    

    См. также:

    • Дополнительные настройки сервиса

    Донастройка веб-сервера (*nix)

    Донастройка веб-сервера требуется в случае использования cpnginx. Необходимо добавить ссылку на файл конфигурации сервиса (include /etc/opt/cprosvs/crlssrv/*/nginx.conf) в основной конфигурационный файл cpnginx (/etc/opt/cprocsp/cpnginx/cpnginx.conf). Ссылка размещается в контексте server на нужном порту (например, там же, где и остальные сервисы КриптоПро SVS).

    Пример конфигурации (фрагмент)

        server {
            listen 443;
            sspi_verify_client off;
            sspi_certificate <serial_number>; #Серийный номер ГОСТ-сертификата веб-сервера
            #sspi_certificate <serial_number>; #Опционально, серийный номер RSA-сертификата веб-сервера
            include mime.types;
            server_name dns-name;
            include /etc/opt/cprosvs/vssrv/*/nginx.conf; 
            include /etc/opt/cprosvs/vsfe/*/nginx.conf;
            include /etc/opt/cprosvs/crlssrv/*/nginx.conf;
    
        }
    

    Активация сервисов

    Выполните активацию/перезапуск сервисов при помощи следующих команд:

    #Активация nginx (если настраивался впервые)
    sudo systemctl enable --now cpnginx.service
    
    #Перезапуск nginx (если выполнялась донастройка)
    sudo systemctl restart cpnginx.service
    
    #Активация сервиса CRLS
    sudo systemctl start "cprosvs-crlssrv-$crlsAppName"
    

    Проверка состояния сервиса

    В случае если сервис работает штатно, при обращении к его конечной точке при помощи POST/GET-запроса будет возвращен HTTP-ответ с кодом StatusCode = "200" и JSON-Content: {"status": "Healthy"}.

    https://$hostname/$crlsAppName/health
    

    Перезапуск сервиса

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

    Restart-CrlsInstance -DisplayName $crlsAppName
    

    Импорт CRL

    Импорт CRL через веб-интерфейс

    Сервис хранения CRL предоставляет веб-интерфейс, отркывающий доступ к следующим функциям:

    • проверка состояния сервиса;
    • загрузка CRL и архивов CRL в базу данных ;
    • отображение диаграммы покрытия CRL.

    Веб-интерфейс доступен по следующей ссылке:

    http(s)://<host>/<AppName>/
    

    Диаграмма покрытия CRL доступна по следующей ссылке:

    http(s)://<host>/<AppName>/pages/coverage/
    

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

    Импорт CRL при помощи командлетов

    Импорт CRL может быть выполнен при помощи следующих командлетов:

    • Import-CrlsArchiveFile - Импорт архива CRL
    • Import-CrlsArchivesFolderRoutine - Импорт CRL из выбранной папки (подходит для большого объема файлов)
    • Import-CrlsFile - Импорт файла CRL

    1. Командлет Import-CrlsArchiveFile позволяет выбрать zip-архив с файлами CRL (путь к архиву указывается в параметре -FilePath). Дополнительно может потребоваться указать имя экземпляра сервиса (-DisplayName).

    Import-CrlsArchiveFile -FilePath <string> [-DisplayName] 
    

    2. Командлет Import-CrlsArchivesFolderRoutine перебирает архивы, загружает найденные в них CRL, пишет логи и мини-отчеты об обработанных архивах и переносит обработанные архивы в папку -ProcessedArchivesFolder.

    Перед запуском комадлета рекомендуется выполнить следующую команду:

    $InformationPreference = "Continue"
    

    После ввода данной команды при работе комадлета в консоли будет выведена диагностическая информация о процессе загрузки CRL.

    Import-CrlsArchivesFolderRoutine `
      #Имя экземпляра
        -DisplayName $appName `
      #Путь к папке с zip-архивами, подлежащими загрузке
        -InputFolder $inputFolder `
      #Путь к папке, в которую будут помещены zip-архивы, обработанные без ошибок импорта
        -ProcessedArchivesFolder $processedFolder `
      #Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных без ошибок импорта
        -ProcessedLogsFolder $processedLogsFolder `
      #Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных с ошибками импорта
        -FailedLogsFolder $failedLogsFolder `
      #Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных с ошибками импорта
        -TreatAsWarnings crl_duplicate `
      #Извлекать ли проблемные CRL в папку с логами загрузки zip-архивов, обработанных с ошибками импорта
        -WriteFailedCrlsToLogs
    

    Параметр -TreatAsWarnings позволяет передать массив ошибок, которые стоит считать предупреждениями, не помечая весь архив как обработанный с ошибками.

    • crl_archive_file_broken - Невозможно распознать файл как файл zip-архива,
    • crl_duplicate - CRL уже содержится в хранилище сервиса,
    • crl_file_invalid - Неверный формат файла CRL (например, дата начала больше даты окончания действия),
    • crl_archive_file_empty - Содержимое архива не передано или имеет пустое значение,
    • crl_file_broken - Невозможно распознать файл как файл CRL,
    • crl_type_not_supported - Неподдерживаемый тип CRL,
    • crl_archive_file_invalid - Архив с файлами не является архивом с CRL,
    • crl_file_empty - Содержимое файла CRL не передано или имеет пустое значение.

    Дополнительно в целях автоматизации импорта CRL в командлете может быть передан параметр -PassThru, позволяющий передать информацию о импортированных CRL по PowerShell pipeline.

    Информация об импортированных CRL представляет собой группы файлов CRL, сгруппированных по коду результата success или одному из ошибочных, перечисленных выше. Каждая группа имеет следующую структуру:

    Параметр Тип Описание
    ResultCode string Результат, с которым были обработаны все файлы в этой группе
    Count int Количество файлов в группе
    Crls List<string> Список имен файлов в группе

    3. Командлет Import-CrlsFile позволяет загрузить файл CRL (путь к файлу указывается в параметре -FilePath). Дополнительно может потребоваться указать имя экземпляра сервиса (-DisplayName).

    Интеграция с SVS

    КриптоПро SVS позволяет осуществлять проверку подписи на момент времени, указанный в метке доверенного времени (МДВ), если таковая доступна. Для этого сервису проверки подписи необходим источник данных о статусах соответствующих сертификатов. В дистрибутив КриптоПро SVS входит плагин-коннектор, позволяющий использовать компонент Сервис хранения CRL в качестве такого источника.

    Настройка плагина-коннектора к Сервису хранения CRL выполняется при помощи следующей команды:

    Add-VsRevProvPlugin -Assembly CryptoPro.Plugins.Revocation.CrlStorage.dll -ClassName CryptoPro.Plugins.Revocation.CrlStorage.RevocationPlugin -Parameters @{“StorageAddress”=”http://<hostname>/CrlStorageTimeLink/Api/”}
    

    Далее необходимо определить требования к процессу проверки подписи:

    • в случае если иногда требуется проводить проверку подписи на момент времени, указанный в МДВ, необходимо в параметрах запроса на проверку подписи передавать флаг "VerifyInThePast":"true";
    • в случае если всегда требуется проводить проверку подписи на момент времени, указанный в МДВ, сервис проверки подписи необходимо переключить в соответствующий режим. Все подписи формата CAdES-T будут проверены на данный момент времени - как загруженные через веб-интерфейс, так и через REST API (вне зависимости от наличия флага VerifyInThePast).

    Переключение сервиса проверки подписи в режим проверки подписи на момент времени из МДВ:

    Set-VsProperties -CadesTVerificationInThePast 1
    

    Дополнительные настройки сервиса

    Настройка Сервиса хранения CRL производится при помощи утилиты конфигурирования PowerShell. Список командлетов, входящих в состав модуля CryptoPro.CrlStorage.PowerShell, можно получить, выполнив команду:

    Get-Command -Module CryptoPro.CrlStorage.PowerShell -CommandType Cmdlet
    

    Для получения справки по каждому из командлетов выполните следующую команду:

    Get-help <имя_командлета>
    # Например:
    Get-Help Import-CrlsArchivesFolderRoutine -Full
    

    Командлеты сервиса:

    Работа с экземпляром сервиса

    Командлет Описание
    Add-CrlsInstance Добавление экземпляра сервиса
    Get-CrlsInstance Получение информации об экземпляре
    Remove-CrlsInstance Удаление экземпляра сервиса
    Restart-CrlsInstance Перезапуск службы сервиса
    Update-CrlsInstance Обновление конфигурации экземпляра (например, иногда требуется после обновления установочного пакета)

    Основные параметры командлета Add-CrlsInstance:

    • -ApplicationName - Имя создаваемого веб-приложения,
    • -ConnectionInfo - Строка подключения к БД,
    • -DbName - Имя БД (если не заполнена строка подключения к БД),
    • -DbType - Тип БД (доступно только значение postgresql) (если не заполнена строка подключения к БД),
    • -DisplayName - Имя экземпляра сервиса,
    • -ListenPort - Порт сервиса из диапазона 62500-62999,
    • -ServiceAccountName - Имя сервисной учетной записи (только для *nix),
    • -SkipServiceRegistration - Пропуск регистрации службы в systemd (если планируется ручное создание).
    • -SqlServerName - IP-адрес сервера с PostgreSQL и TSP-порт, на котором по умолчанию прослушиваются соединения,

    В командлете Remove-CrlsInstance доступны параметры -DeleteDB, если требуется также удалить базу данных сервиса, и -Force - если требуется удаление без дополнительного подтверждения в консоли.

    Настройки сервиса

    Командлет Описание
    Get-CrlsProperties Получение настроек сервиса
    Get-CrlsRegistryProperties Получение строки подключения к БД
    New-CrlsSqlConnectionInfo Добавление строки подключения к БД
    Set-CrlsProperties Основные настройки сервиса
    Set-CrlsRegistryProperties Редактирование строки подключения к БД

    Основные параметры командлета New-CrlsSqlConnectionInfo:

    • -AccountType - Имя создаваемого веб-приложения,
    • -AdditionalParameters - Дополнительные параметры подключения,
    • -AsUser - Имя Администратора СУБД,
    • -AsUserPassword - Пароль Администратора СУБД,
    • -BeginUseEmpty - Использовать существующую пустую БД,
    • -CommandTimeoutSeconds - Таймаут выполнения SQL-запросов во время миграции в секундах,
    • -CreateBackUp - Создавать бекап базы данных перед обновлением,
    • -CreateLogin - Создавать SQL-логин автоматически,
    • -DatabaseName - Имя БД,
    • -DbType - Тип БД (доступно только значение postgresql),
    • -RepairDatabaseChecksums - Восстановить контрольные суммы при обновлении БД,
    • -RestoreAccessModeAfterError - Будет ли БД возвращена в MULTI_USER режим на время обновления,
    • -ServerName - IP-адрес сервера с PostgreSQL и TSP-порт, на котором по умолчанию прослушиваются соединения,
    • -ServiceAccountName - Имя сервисной учетной записи для подключения к СУБД,
    • -ServiceAccountPassword - Пароль сервисной учетной записи для подключения к СУБД,
    • -SkipCreateLogin - Не создавать SQL-логин автоматически,
    • -SkipValidation - Не проверять адрес SQL-сервера,
    • -TraceLogPath - Путь для записи трассировки обновления базы данных,
    • -UseExclusiveAccessMode - Будет ли БД переведена в SINGLE_USER режим на время обновления,
    • -UseExistingDB - Использовать существующую базу данных,
    • -UseNetworkService - Использовать учетную запись NetworkService в качестве сервисной учетной записи.

    Основные параметры командлета Set-CrlsProperties:

    • -ArchiveUploadingAcquiredMemoryBytes - Количество оперативной памяти в байтах, которое не должен превышать деархиватор при извлечении CRL в память во время загрузки архива (может использоваться для ускорения загрузки CRL на высокопроизводительных серверах),
    • -ArchiveUploadingMaxFileParallelism - Максимальное количество параллельных задач при записи файлов CRL в хранилище файлов. Обычно это значение ограничивается сверху максимальным количеством потоков записи на файловую систему (может использоваться для ускорения загрузки CRL на высокопроизводительных серверах),
    • -ArchiveUploadingMaxMetadataParallelism - Максимальное количество параллельных задач при записи метаданных CRL в хранилище метаданных. Обычно это значение ограничевается сверху разрешенным количеством одновременных подключений к базе данных,
    • -DisplayName - Имя экземпляра сервиса,
    • -FileStorageFileSystemFolderPath - Путь к папке файлового хранилища CRL на файловой системе,
    • -UpdateCrlFileWhileUploadDuplicate - Проверять ли наличие файла CRL в хранилище при загрузке в случае нахождения дубликата в целях обновления/восстановления файла,
    • -VerifyCrlSignature - Проверять ли подпись CRL при загрузке.

    Основные параметры командлета Set-CrlsRegistryProperties:

    • -DisplayName - Имя экземпляра сервиса,
    • -DbConnection - Строка подключения к БД,
    • -DbType - Тип БД (доступно только значение postgresql).

    Импорт CRL

    Командлет Описание
    Import-CrlsArchiveFile Импорт архива CRL
    Import-CrlsArchivesFolderRoutine Импорт CRL из выбранной папки (подходит для большого объема файлов)
    Import-CrlsFile Импорт файла CRL

    Основные параметры командлета Import-CrlsArchiveFile:

    • -DisplayName - Имя экземпляра сервиса,
    • -FilePath - Путь к zip-архиву с файлами CRL.

    Основные параметры командлета Import-CrlsArchivesFolderRoutine:

    • -DisplayName - Имя экземпляра сервиса,
    • -FailedLogsFolder - Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных с ошибками импорта,
    • -InputFolder - Путь к папке с zip-архивами, подлежащими загрузке,
    • -PassThru - Передавать информацию о загруженных CRL далее по PowerShell pipeline.
    • -ProcessedArchivesFolder - Путь к папке, в которую будут помещены zip-архивы, обработанные без ошибок импорта,
    • -ProcessedLogsFolder - Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных без ошибок импорта,
    • -TreatAsWarnings - Путь к папке, в которую будут помещены логи загрузки zip-архивов, обработанных с ошибками импорта,
    • -WriteFailedCrlsToLogs - Извлекать ли проблемные CRL в папку с логами загрузки zip-архивов, обработанных с ошибками импорта,

    Подробнее о применении командлета см. Импорт CRL.

    Основные параметры командлета Import-CrlsFile:

    • -DisplayName - Имя экземпляра сервиса,
    • -FilePath - Путь к файлу CRL.

    Журналирование

    Журналирование экземпляра выполняется при помощи следующих командлетов. Настройка журналирования идентична настройкам, описанным для, например, сервиса Ключ Lite.

    Командлет Описание
    Add-CrlsLoggingRule Добавление правила журналирования
    Get-CrlsLoggingProperties Получение основных настроек журналирования
    Get-CrlsLoggingRule Получение информации о правиле журналирования
    Remove-CrlsLoggingRule Удаление правила журналирования
    Set-CrlsLoggingProperties Основные настройки журналирования
    Set-CrlsLoggingRule Настройки правила журналирования

    REST API Сервиса хранения CRL

    REST-интерфейс предоставляет конечные точки для доступа к следующим функциям Сервиса Проверки Подписи:

    • Работа с CRL;
    • Работа с издателями CRL

    Взаимодействие с REST API Сервиса хранения CRL осуществляется при помощи http-запросов к нужной конечной точке. Общий префикс для всех конечных точек сервиса: https://<hostname>/<ApplicationName>/api, где

    • <hostname> – адрес сервера, на котором расположен экземпляр веб-приложения Сервиса хранения CRL,
    • <ApplicationName> – название веб-приложения Сервиса хранения CRL.

    Входные параметры могут быть переданы в теле самого запроса. Все объекты передаются и возвращаются в формате JSON, списки возвращаются в виде массивов JSON объектов. Массивы байтов передаются в виде строк в кодировке Base64.

    Конечная точка Crl

    Метод UploadCrl

    Метод позволяет загрузить файл CRL.

    Параметр Значение
    HTTP-метод POST
    Поддерживаемые типы содержимого application/octet-stream, multipart/form-data
    Путь https://<hostname>/<ApplicationName>/api/Crl/UploadCrl
    Заголовок В случае типа содержимого application/octet-stream необходимо указывать заголовок X-Filename
    Параметры file - содержимое загружаемого архива CRL в теле запроса или multipart-данные
    Возвращаемое значение CrlUploadResponse - результат загрузки файла CRL

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/Crl/UploadCrl
    Content-Type: application/octet-stream
    X-Filename: ca.crl
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "crlId": 0
    }
    

    Метод UploadCrlArchive

    Метод позволяет загрузить архив CRL.

    Параметр Значение
    HTTP-метод POST
    Поддерживаемые типы содержимого application/octet-stream, multipart/form-data
    Путь https://<hostname>/<ApplicationName>/api/Crl/UploadCrlArchive
    Заголовок В случае типа содержимого application/octet-stream необходимо указывать заголовок X-Filename
    Параметры file - содержимое загружаемого архива CRL в теле запроса или multipart-данные
    Возвращаемое значение CrlUploadArchiveResponse - результат загрузки архива CRL

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/Crl/UploadCrlArchive
    Content-Type: application/octet-stream
    X-Filename: ca.crl
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "stats": {
        "totalCount": 0,
        "succeededCount": 0,
        "failedCountByErrorCode": {
          "additionalProp1": 0,
          "additionalProp2": 0,
          "additionalProp3": 0
        }
      },
      "processedEntries": [
        {
          "fileName": "string",
          "succeeded": true,
          "error": {
            "error": "string",
            "error_description": "string"
          },
          "result": {
            "crlId": 0
          }
        }
      ]
    }
    

    Метод GET crlId

    Метод позволяет получить краткую информацию о CRL по идентификатору.

    Параметр Значение
    HTTP-метод GET
    Путь https://<hostname>/<ApplicationName>/api/Crl/{crlId}
    Параметры в строке запроса crlId - идентификатор CRL
    Возвращаемое значение CrlInfo - информация о CRL

    Пример запроса

    GET /<hostname>/<ApplicationName>/api/Crl/{{crlId}}
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "metadata": {
        "id": 0,
        "issuerKeyIdentifier": "string",
        "issuerName": "string",
        "crlNumber": "string",
        "baseCrlNumber": "string",
        "issuingDistributionPointNames": [
          "string"
        ],
        "thisUpdate": 0,
        "nextUpdate": 0,
        "certificatesCount": 0,
        "fileName": "string",
        "fileSize": 0,
        "verifiedAt": 0
      }
    }
    

    Метод GET crlId/Content

    Метод позволяет получить файл CRL по идентификатору.

    Параметр Значение
    HTTP-метод GET
    Путь https://<hostname>/<ApplicationName>/api/Crl/{crlId}/Content
    Параметры в строке запроса crlId - идентификатор CRL
    Возвращаемое значение Тип Stream - содержимое файла CRL

    Пример запроса

    GET /<hostname>/<ApplicationName>/api/Crl/{{crlId}}/Content
    

    Пример ответа

    HTTP/1.1 200
    content-disposition: attachment; filename=2323_03.crl; filename*=UTF-8''2323_03.crl 
    content-type: application/octet-stream 
    
    documentData
    

    Метод LookupCrl

    Метод позволяет находить CRL на определенную дату по информации об издателе.

    Параметр Значение
    HTTP-метод POST
    Путь https://<hostname>/<ApplicationName>/api/Crl/LookupCrl
    Поддерживаемые типы содержимого application/json
    Параметры в теле запроса CrlRequestLookupCrl - Запрос на поиск CRL
    Возвращаемое значение CrlLookupResponse - Ответ на запрос поиска CRL

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/Crl/LookupCrl
    
    {
      "IssuerName": "2.5.4.3=ФНС России, 2.5.4.10=Федеральная налоговая служба, 2.5.4.9=\"ул. Неглинная, д. 23\", 2.5.4.7=Москва, 2.5.4.8=77 Москва, 2.5.4.6=RU, 1.2.643.3.131.1.1=007707329152, 1.2.643.100.1=1047707030513, 1.2.840.113549.1.9.1=mns10625@nalog.ru",
      "IssuerKeyIdentifier": "de66ae143c9b762894a66897749776b95c800324",
      "cdps": {
        "distributionPoints": [
          {
            "altNames": [
              {
                "type": "OTHER_NAME",
                "value": "string"
              }
            ]
          }
        ]
      },
      "validationTime": 1
    }
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "found": true,
      "baseCrlId": 0,
      "deltaCrlId": 0
    }
    

    Пример заполнения ответа, если CRL не найден:

    HTTP/1.1 200
    
    {
      "found": false,
      "baseCrlId": null,
      "deltaCrlId": null
    }
    

    Метод LookupCrlEntry

    Метод позволяет искать запись о сертификате в CRL до определенного момента времени по информации об издателе. Предоставляется информация о самой свежей записи из найденных.

    Параметр Значение
    HTTP-метод POST
    Путь https://<hostname>/<ApplicationName>/api/Crl/LookupCrlEntry
    Поддерживаемые типы содержимого application/json
    Параметры CrlRequestLookupCrlEntry - Запрос на поиск записи об отзыве сертификата
    Возвращаемое значение CrlEntryLookupResponseEx - Ответ на запрос поиска записи об отзыве

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/Crl/LookupCrlEntry
    
    {
      "IssuerName": "2.5.4.3=ФНС России, 2.5.4.10=Федеральная налоговая служба, 2.5.4.9=\"ул. Неглинная, д. 23\", 2.5.4.7=Москва, 2.5.4.8=77 Москва, 2.5.4.6=RU, 1.2.643.3.131.1.1=007707329152, 1.2.643.100.1=1047707030513, 1.2.840.113549.1.9.1=mns10625@nalog.ru",
      "IssuerKeyIdentifier": "de66ae143c9b762894a66897749776b95c800324",
      "cdps": {
        "distributionPoints": [
          {
            "altNames": [
              {
                "type": "OTHER_NAME",
                "value": "string"
              }
            ]
          }
        ]
      },
      "validationTime": 0,
      "certificateSerialNumber": "string"
    }
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "crl": {
        "found": true,
        "baseCrlId": 0,
        "deltaCrlId": 0
      },
      "crlEntry": {
        "found": true,
        "revocationReason": 0,
        "revocationDate": 0
      }
    }
    

    Пример заполнения ответа, если не найдены ни CRL, ни запись об отзыве сертификата:

    HTTP/1.1 200
    
    {
      "Crl":
      {
        "found": false,
        "baseCrlId": null,
        "deltaCrlId": null
      },
      "CrlEntry":
      {
        "found": false,
        "RevocationReason": 0,
        "RevocationDate": 0
      },
    }
    

    Конечная точка CrlIssuer

    Метод FilterCrlIssuers

    Метод позволяет находить загруженных в БД издателей CRL.

    Параметр Значение
    HTTP-метод POST
    Путь https://<hostname>/<ApplicationName>/api/CrlIssuer/FilterCrlIssuers
    Поддерживаемые типы содержимого application/json
    Параметры в теле запроса CrlRequestIssuerFilter - Запрос на поиск издателей CRL с фильтрацией
    Возвращаемое значение CrlIssuersInfo - Контейнер списка издателей CRL

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/CrlIssuer/FilterCrlIssuers
    
    {
      "issuerNameFilter": "string",
      "issuerKeyIdentifierFilter": "string"
    }
    

    Пример ответа

    HTTP/1.1 200
    
    {
      "issuers": [
        {
          "IssuerName": "2.5.4.3=ФНС России, 2.5.4.10=Федеральная налоговая служба, 2.5.4.9=\"ул. Неглинная, д. 23\", 2.5.4.7=Москва, 2.5.4.8=77 Москва, 2.5.4.6=RU, 1.2.643.3.131.1.1=007707329152, 1.2.643.100.1=1047707030513, 1.2.840.113549.1.9.1=mns10625@nalog.ru",
          "IssuerKeyIdentifier": "de66ae143c9b762894a66897749776b95c800324",
          "crlsCount": 0,
          "crls": [
            0
          ]
        }
      ]
    }
    

    Метод DeleteCrlIssuer

    Метод позволяет удалять загруженных в БД издателей CRL вместе с CRL и записями об отзывах сертификатов.

    Параметр Значение
    HTTP-метод POST
    Путь https://<hostname>/<ApplicationName>/api/CrlIssuer/DeleteCrlIssuer
    Поддерживаемые типы содержимого application/json
    Параметры в теле запроса CrlRequestIssuerDelete - Запрос на удаление издателя CRL
    Возвращаемое значение -

    Пример запроса

    POST /<hostname>/<ApplicationName>/api/CrlIssuer/DeleteCrlIssuer
    
    {
      "IssuerName": "2.5.4.3=ФНС России, 2.5.4.10=Федеральная налоговая служба, 2.5.4.9=\"ул. Неглинная, д. 23\", 2.5.4.7=Москва, 2.5.4.8=77 Москва, 2.5.4.6=RU, 1.2.643.3.131.1.1=007707329152, 1.2.643.100.1=1047707030513, 1.2.840.113549.1.9.1=mns10625@nalog.ru",
      "IssuerKeyIdentifier": "de66ae143c9b762894a66897749776b95c800324",
    }
    

    Пример ответа

    HTTP/1.1 200
    

    Типы данных

    Тип данных CrlUploadResponse

    Структура CrlUploadResponse содержит информацию об об успешно загруженном файле CRL.

    Поле Тип Описаниe
    CrlId int Идентификатор загруженного CRL

    Тип данных CrlUploadArchiveResponse

    Структура CrlUploadArchiveResponse содержит ответ на запрос загрузки zip-архива с файлами CRL.

    Поле Тип Описаниe
    Stats CrlUploadArchiveResponseStats Сводка по загруженным файлам CRL из содержимого архива
    ProcessedEntries IList<CrlUploadArchiveResponseEntry> Детальная информация о загруженных файлах CRL из содержимого архива

    Тип данных CrlUploadArchiveResponseStats

    Структура CrlUploadArchiveResponseStats содержит сводку по загруженным файлам CRL из содержимого архива.

    Поле Тип Описаниe
    TotalCount int Количество обработанных файлов CRL из zip-архива
    SucceededCount int Количество успешно загруженных файлов CRL из zip-архива
    FailedCountByErrorCode Dictionary<string, int> Сводка по ошибкам загрузки файлов CRL (код ошибки + количество таких ошибок)

    Тип данных CrlUploadArchiveResponseEntry

    Структура CrlUploadArchiveResponseEntry содержит детальную информацию о загруженных файлах CRL из содержимого архива.

    Поле Тип Описаниe
    FileName string Имя файла CRL
    Succeeded bool Удалось ли загрузить файл CRL
    Error ServiceErrorResponse Информация об ошибке загрузки файла CRL. Данное поле заполняется в случае ошибки загрузки
    Result CrlUploadResponse Информация об успешно загруженном файле CRL. Данное поле заполняется в случае успешной загрузки

    Информация об ошибке ServiceErrorResponse

    Поле Тип Описаниe
    Error string Код ошибки
    ErrorDescription string Описание ошибки

    Типовые ошибки сервиса:

    HTTP-код Описание
    400 Неверный запрос
    500 Внутренняя ошибка сервера

    Тип данных CrlInfo

    Структура CrlInfo содержит информацию о CRL.

    Поле Тип Описаниe
    Metadata CrlMetadata Краткая информация о CRL из БД
    FileAvailable bool Доступен ли файл CRL для скачивания. Может быть недоступен в случае недоступности/неработоспособности хранилища файлов CRL

    Тип данных CrlMetadata

    Структура CrlMetadata содержит краткую информацию о CRL из БД.

    Поле Тип Описаниe
    Id int Идентификатор CRL внутри сервиса
    IssuerKeyIdentifier string Идентификатор ключа издателя CRL
    IssuerName string Различительное имя издателя CRL
    CrlNumber string Номер CRL
    BaseCrlNumber string Номер базового CRL (присутствует в Delta CRL)
    IssuingDistributionPointNames string[] Имена точек распространения CRL
    ThisUpdate long Время начала действия CRL (unix timestamp)
    NextUpdate long Время окончания действия CRL (unix timestamp)
    CertificatesCount int Количество записей об отзыве сертификатов
    FileName string Имя загруженного файла CRL
    FileSize long Размер загруженного файла CRL
    VerifiedAt long Время проверки подписи CRL (unix timestamp). Отсутствует, если проверка не производилась.

    Тип данных CrlRequestLookupCrl

    Структура CrlRequestLookupCrl содержит запрос на поиск CRL.

    Поле Тип Описаниe
    IssuerName string Различительное имя издателя CRL. Обязательный параметр
    IssuerKeyIdentifier string Идентификатор ключа издателя CRL. Обязательный параметр
    Cdps CrlRequestLookupCdps Информация о точках распространения CRL для дополнительной фильтрации. Необязательный параметр
    ValidationTime long Момент времени, на который проверяется поиск подходящего CRL. Обязательный параметр

    Тип данных CrlRequestLookupCdps

    Структура CrlRequestLookupCdps содержит информацию о точках распространения CRL для дополнительной фильтрации.

    Поле Тип Описаниe
    DistributionPoints CrlRequestLookupCdp[] Информация о точке распространения CRL

    CrlRequestLookupCdp

    Поле Тип Описаниe
    AltNames CrlRequestLookupCdpAltName[] Набор имен точек распространения CRL

    CrlRequestLookupCdpAltName

    Поле Тип Описаниe
    Type CdpAltNameTypes Тип имени точки распространения CRL
    Value string Значение имени точки распространения CRL

    CdpAltNameTypes

    Тип имени точки распространения CRL в соответствии с RFC 5280.

    Тип Значение
    1 OTHER_NAME
    2 RFC822_NAME
    3 DNS_NAME
    4 X400_ADDRESS
    5 DIRECTORY_NAME
    6 EDI_PARTY_NAME
    7 URL
    8 IP_ADDRESS
    9 REGISTERED_ID

    Тип данных CrlLookupResponse

    Структура CrlLookupResponse содержит ответ на запрос поиска CRL.

    Поле Тип Описаниe
    Found bool Был ли найден CRL по указанным в запросе параметрам
    BaseCrlId int Идентификатор найденного CRL (если найден Full CRL, в поле будет помещен идентификатор Base CRL)
    DeltaCrlId int Идентификатор найденного Delta CRL (если найден Full CRL, в поле будет помещен идентификатор Delta CRL)

    Пример заполнения ответа, если CRL не найден:

    {
      "found": false,
      "baseCrlId": null,
      "deltaCrlId": null
    }
    

    Тип данных CrlRequestLookupCrlEntry

    Структура CrlRequestLookupCrlEntry содержит запрос на поиск записи об отзыве сертификата.

    Поле Тип Описаниe
    IssuerName string Различительное имя издателя CRL. Обязательный параметр
    IssuerKeyIdentifier string Идентификатор ключа издателя CRL. Обязательный параметр
    Cdps CrlRequestLookupCdps Информация о точках распространения CRL для дополнительной фильтрации. Необязательный параметр
    ValidationTime long Момент времени, на который проверяется поиск подходящего CRL. Обязательный параметр
    CertificateSerialNumber string Серийный номер сертификата

    Тип данных CrlEntryLookupResponseEx

    Структура CrlEntryLookupResponseEx содержит ответ на запрос поиска записи об отзыве сертификата.

    Поле Тип Описаниe
    Crl CrlLookupResponse Информация о том, был ли найден CRL по указанным в запросе параметрам
    CrlEntry CrlEntryLookupResponse Информация о том, была ли найдена запись об отзыве сертификата по указанным в запросе параметрам

    Тип данных CrlEntryLookupResponse

    Структура CrlEntryLookupResponse содержит информацию о том, была ли найдена запись об отзыве сертификата по указанным в запросе параметрам.

    Поле Тип Описаниe
    Found bool Была ли найдена запись об отзые сертификата по указанным в запросе параметрам
    RevocationReason int Причина отзыва сертификата
    RevocationDate long Дата отзыва сертификата

    Тип данных CrlRequestIssuerFilter

    Структура CrlRequestIssuerFilter содержит запрос на поиск издателей CRL с фильтрацией.

    Поле Тип Описаниe
    IssuerNameFilter string Фильтр различительного имени издателя. Необязательный параметр
    IssuerRevocationReason int Фильтр идентификатора ключа издателя. Необязательный параметр

    Тип данных CrlIssuersInfo

    Структура CrlIssuersInfo содержит контейнер для списка издателей CRL.

    Поле Тип Описаниe
    Issuers IList<CrlIssuerInfo> Список издателей CRL

    Тип данных CrlIssuerInfo

    Структура CrlIssuerInfo содержит список издателей CRL.

    Поле Тип Описаниe
    IssuerName string Различительное имя издателя CRL
    IssuerKeyIdentifier string Идентификатор ключа издателя CRL
    CrlsCount int Количество CRL от этого издателя
    Crls int[] Список идентификаторов CRL от этого издателя

    Тип данных CrlRequestIssuerDelete

    Структура CrlRequestIssuerDelete содержит запрос на удаление издателя CRL.

    Поле Тип Описаниe
    IssuerName string Различительное имя издателя CRL
    IssuerKeyIdentifier string Идентификатор ключа издателя CRL
    В начало © ООО "КРИПТО-ПРО", 2000–2026