При разработке и тестировании интеграций с системами маркировки (такими как «Честный Знак» или МДЛП), а также при настройке электронного документооборота (ЭДО) в 1С, программисты часто сталкиваются с необходимостью иметь полноценную электронную подпись (ЭЦП). Однако использовать «боевую» подпись руководителя для тестов небезопасно и неудобно. Возникает задача: создать тестовую ЭЦП, которая по структуре будет идентична настоящей, включая специфические поля ИНН, ОГРН и СНИЛС.
В этой статье мы подробно разберем, почему стандартные методы генерации часто не срабатывают, и проанализируем работающие способы создания тестовых сертификатов с нужными атрибутами.
Многие пользователи пытаются создать запрос через старую страницу Microsoft Certificate Services (обычно это адрес типа cryptopro.ru/certsrv/...). Попытки прописать атрибуты в текстовом поле «Атрибуты» в формате SNILS = 12345678901 или INN = 1234567890 зачастую заканчиваются неудачей. Выясним причину этого поведения.
Дело в том, что текстовое поле на старых веб-интерфейсах предназначено для передачи дополнительных параметров серверу, а не для формирования структуры самого сертификата. Чтобы данные попали в итоговый сертификат, они должны быть упакованы в запрос на выпуск сертификата (CSR) на стороне вашего компьютера. Рассмотрим правильные способы решения этой задачи.
Наиболее простым и современным способом является использование обновленного Центра Регистрации КриптоПро. Разберем по шагам, как выпустить там нужный нам сертификат:
cryptopro.ru/ui/).Крипто-Про GOST R 34.10-2012) и создать контейнер закрытого ключа.Этот метод позволяет получить корректный файл сертификата, который системы маркировки примут для тестовых контуров.
Если нам требуется программно сформировать запрос или использовать утилиты командной строки, нам не обойтись без понимания OID (Object Identifier). В криптографии каждое поле (ИНН, СНИЛС и т.д.) имеет свой цифровой код. Посмотрим на основные коды, используемые в РФ:
1.2.643.100.31.2.643.100.11.2.643.3.131.1.11.2.643.100.4Проанализируем ситуацию: когда мы просто пишем слово «СНИЛС» в поле атрибутов, сервер не понимает, к какому 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 можно загрузить в тестовый УЦ, и все поля будут корректно считаны.
Рассмотрим ситуацию, когда сервис КриптоПро недоступен или не подходит. Существуют альтернативные площадки, которые часто используют 1С-разработчики:
При тестировании маркировки лекарственных препаратов (МДЛП) простого наличия ИНН и СНИЛС может быть недостаточно. Выясним причину: проверяющие алгоритмы часто ищут в сертификате наличие специфического расширения — Enhanced Key Usage (EKU).
В современном интерфейсе КриптоПро (способ 1) это настраивается выбором роли. Для маркировки убедитесь, что в сертификате присутствуют права на использование в соответствующих информационных системах. Если вы формируете сертификат вручную, проверьте, что выбранный шаблон на стороне УЦ поддерживает «Улучшенный ключ» для работы с государственными порталами.
После того как мы успешно создали и установили тестовую ЭЦП, 1С или браузер могут выдать ошибку: «Цепочка сертификатов не проверена» или «Сертификат не является доверенным». Это происходит потому, что ваш компьютер не «знает» тестовый удостоверяющий центр.
Обязательно выполним следующие действия:
root.cer или «Скачать корневой сертификат» на главной странице сервиса).МенеджерКриптографии.Рассмотренные методы позволяют полностью закрыть потребность в тестовых сертификатах для любых задач автоматизации, связанных с использованием криптографии в 1С.