Как создать тестовую ЭЦП по ГОСТу с ИНН, ОГРН и СНИЛС

Программист IT и автоматизация бизнеса
← На главную

При разработке и тестировании интеграций с системами маркировки (такими как «Честный Знак» или МДЛП), а также при настройке электронного документооборота (ЭДО) в 1С, программисты часто сталкиваются с необходимостью иметь полноценную электронную подпись (ЭЦП). Однако использовать «боевую» подпись руководителя для тестов небезопасно и неудобно. Возникает задача: создать тестовую ЭЦП, которая по структуре будет идентична настоящей, включая специфические поля ИНН, ОГРН и СНИЛС.

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

Почему не работает стандартный интерфейс CertSrv

Многие пользователи пытаются создать запрос через старую страницу Microsoft Certificate Services (обычно это адрес типа cryptopro.ru/certsrv/...). Попытки прописать атрибуты в текстовом поле «Атрибуты» в формате SNILS = 12345678901 или INN = 1234567890 зачастую заканчиваются неудачей. Выясним причину этого поведения.

Дело в том, что текстовое поле на старых веб-интерфейсах предназначено для передачи дополнительных параметров серверу, а не для формирования структуры самого сертификата. Чтобы данные попали в итоговый сертификат, они должны быть упакованы в запрос на выпуск сертификата (CSR) на стороне вашего компьютера. Рассмотрим правильные способы решения этой задачи.

Способ 1: Использование современного портала КриптоПро (UI)

Наиболее простым и современным способом является использование обновленного Центра Регистрации КриптоПро. Разберем по шагам, как выпустить там нужный нам сертификат:

  1. Перейдем на страницу современного интерфейса тестового УЦ КриптоПро (адрес cryptopro.ru/ui/).
  2. Выберем раздел создания сертификата. В отличие от старых форм, здесь реализован полноценный мастер настройки.
  3. Важный момент: при выборе шаблона сертификата необходимо указать «Квалифицированная ЭП» или шаблон для «СМЭВ». Именно в этих шаблонах на стороне сервера разрешено использование дополнительных полей.
  4. После выбора шаблона в интерфейсе появятся явные поля для ввода:
    • Фамилия, Имя, Отчество;
    • СНИЛС;
    • ИНН (физического лица или организации);
    • ОГРН.
  5. Заполним данные и нажмем кнопку формирования запроса. Браузер предложит выбрать криптопровайдер (обычно это Крипто-Про GOST R 34.10-2012) и создать контейнер закрытого ключа.

Этот метод позволяет получить корректный файл сертификата, который системы маркировки примут для тестовых контуров.

Способ 2: Работа с идентификаторами объектов (OID)

Если нам требуется программно сформировать запрос или использовать утилиты командной строки, нам не обойтись без понимания OID (Object Identifier). В криптографии каждое поле (ИНН, СНИЛС и т.д.) имеет свой цифровой код. Посмотрим на основные коды, используемые в РФ:

Проанализируем ситуацию: когда мы просто пишем слово «СНИЛС» в поле атрибутов, сервер не понимает, к какому OID это относится. Для профессиональной генерации запроса можно использовать файл конфигурации (инф-файл) и утилиту certreq.

Пример структуры секции [NewRequest] в файле для генерации запроса через командную строку:


[NewRequest]
Subject = "CN=Тестовый Тест Тестович, SN=Тест, G=Тестович, E=test@test.ru, OID.1.2.643.100.3=12345678901, OID.1.2.643.3.131.1.1=123456789012"
KeySpec = 1
KeyLength = 512
ProviderName = "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider"
ProviderType = 80
MachineKeySet = FALSE

После подготовки такого файла запрос создается командой certreq -new request.inf request.req. Полученный файл request.req можно загрузить в тестовый УЦ, и все поля будут корректно считаны.

Способ 3: Использование альтернативных тестовых УЦ

Рассмотрим ситуацию, когда сервис КриптоПро недоступен или не подходит. Существуют альтернативные площадки, которые часто используют 1С-разработчики:

Особенности для систем «Честный Знак» и МДЛП

При тестировании маркировки лекарственных препаратов (МДЛП) простого наличия ИНН и СНИЛС может быть недостаточно. Выясним причину: проверяющие алгоритмы часто ищут в сертификате наличие специфического расширения — Enhanced Key Usage (EKU).

В современном интерфейсе КриптоПро (способ 1) это настраивается выбором роли. Для маркировки убедитесь, что в сертификате присутствуют права на использование в соответствующих информационных системах. Если вы формируете сертификат вручную, проверьте, что выбранный шаблон на стороне УЦ поддерживает «Улучшенный ключ» для работы с государственными порталами.

Важный завершающий шаг: Доверие к сертификату

После того как мы успешно создали и установили тестовую ЭЦП, 1С или браузер могут выдать ошибку: «Цепочка сертификатов не проверена» или «Сертификат не является доверенным». Это происходит потому, что ваш компьютер не «знает» тестовый удостоверяющий центр.

Обязательно выполним следующие действия:

  1. Скачаем корневой сертификат тестового УЦ (обычно ссылка root.cer или «Скачать корневой сертификат» на главной странице сервиса).
  2. Установим его в хранилище «Доверенные корневые центры сертификации» (для текущего пользователя или локального компьютера).
  3. Только после этого атрибуты ИНН и СНИЛС будут корректно считываться программными методами 1С через объекты МенеджерКриптографии.

Рассмотренные методы позволяют полностью закрыть потребность в тестовых сертификатах для любых задач автоматизации, связанных с использованием криптографии в 1С.

← На главную