|
Ошибка подписи в ИС ЭСФ
|
|||
---|---|---|---|
#18+
Всем привет! Есть кто-нибудь из Казахстана, кто делал интеграцию с ИС ЭСФ? Я столкнулся с тем, что загруженный мною ЭСФ не принимается системой из-за ошибки подписи. В веб-версии самой ИС мой счет видно и все проверки он прошел кроме подписи. Основной нюанс в том, что я не использую официальный SDK для подписи, а обхожусь средствами NCALayer. Я понимаю, что сделал велосипед, но счета отправляются и проходят проверки. Проблема только в подписи. На вопрос, отличается ли алгоритм подписи в SDK от NCALayer служба поддержки ИС ЭСФ ответила, что не отличается и проблем быть не должно. Больше от них добиться нечего. Вопрос о том, как "правильно" подписывать с помощью NCALayer они также не прояснили. Проект является веб-приложением. С NCALayer я работаю через WebSocket. На стороне сервера формирую XML-представление счета и в виде строки шлю клиенту. На клиенте отправляю запрос в NCALayer на выполнение signXmls (kz.gov.pki.knca.commonUtils.signXmls) с параметрами в виде массива строк (счета) и именем хранилища с сертификатами RSA. В результате получаю массив видоизмененных XML своих счетов: в тело каждого документа добавляется элемент "ds:Signature". Этот XML использую для формирования запроса в ИС ЭСФ: внутренности элемента invoice, кроме "ds:Signature", записываю в invoiceBody (внутрь "v2:invoice"), значение элемента "ds:SignatureValue" в "signature", а "ds:X509Certificate" в "x509Certificate". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 08:54 |
|
Ошибка подписи в ИС ЭСФ
|
|||
---|---|---|---|
#18+
S-V-E, казахстанскую ИС я не знаю...но есть опыт интеграрации с гос сервисами с государственным криптоалгоритмом. 1.Обычно разработчиками дается некоторый пример(я его называю эталонный пример)...его нужно "поднять" у себя даже если Вы будите пользоваться другим SDK для подписи. и шифрования...в случае проблемного сравниваете его с эталонным побайтно. (У меня случай был с программным РРО(Украина) Opensource либа добавила символ \n 0x0A в конец фразы...два дня провозился пока не сравнил с эталонным алгоритмом) 2.Нужно найти сайт или программу ,которая проверяет подпись...ВЫ ей скармливаете подписанный файл...она Вам выдает исходный файл(для проверки с исходным базовым до вашего алгоритма) саму подпись и протокол проверки. (Например Украинский https://czo.gov.ua/verify) Очень помогает для интеграции с гос.сервисами если идет что-то не так. в Росии Крипто- про и лисси могут дать прогу... А в у Вас узнавайте у поддержки где можно свою подпись реврерсно проверить. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2020, 10:39 |
|
Ошибка подписи в ИС ЭСФ
|
|||
---|---|---|---|
#18+
irbis_al, спасибо за ответ! Про то, что мои исходные данные не соответствуют эталонному формату, я понял сразу. И убедился в этом, прогнав их через примеры из SDK: подписываются строки, а не XML. Вопрос мой заключался лишь в том, чтобы узнать, как подписывать ЭСФ только с помощью NCALayer. Это средство необходимо для взаимодействия граждан и бизнеса с государственными сервисами, в том числе и с веб-версией ИС ЭСФ. Так что мне с самого начала казалось логичным, что алгоритм подписи в нем и в SDK должны быть одинаковыми. Увы, в SDK я не нашел связи с NCALayer и подпись там выполняется локальным сервером на Java. Видимо по-уму в проекте надо создавать локальный сервер подписи (на основе примера из SDK). Но если так, то может тогда и отдельный сервер для взаимодействия с ИС ЭСФ?! А не слишком ли много для того, чтобы выполнить несколько операций? Чуть позже открыв NCALayer обратил внимание на список модулей, среди которых есть "ИС ЭСФ 1.1". Вообще NCALayer предназначен для выполнения криптографических функций, т.е. это его базовый функционал, который может быть расширен сторонними модулями. А если есть модуль, значит он должен где-то использоваться! Поковырявшись в исходниках тестового стенда я нашел скрипт, где есть обращение к NCALayer! Итак чтобы подписать одну строку отправьте веб-сокету объект следующего вида в формате JSON Код: javascript 1. 2. 3. 4. 5. 6.
где dataToSign ваша строка, storageName - имя хранилища ключей (PKCS12 если ключи хранятся локально на компьютере). чтобы подписать массив строк Код: javascript 1. 2. 3. 4. 5. 6.
arrayToSign - объект со свойствами из подписываемых строк и ключами из их идентификаторов Код: javascript 1. 2. 3. 4. 5.
Кстати, упоминание модуля "ИС ЭСФ 1.1" есть только в документации пользователя (что он просто требуется), а в SDK вообще ничего нет. Служба поддержки до сих пор не ответила, хотя я в первом же письме (как и в своем первом посте) написал какую команду (неправильную) отправлял в веб-сокет... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2021, 14:59 |
|
|
start [/forum/topic.php?fid=33&gotonew=1&tid=1547075]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 430ms |
0 / 0 |