Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline LiebeMein  
#1 Оставлено : 12 мая 2021 г. 10:46:49(UTC)
LiebeMein

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.04.2021(UTC)
Сообщений: 3
Российская Федерация
Откуда: Ulyanovsk

Добрый День!
Подготавливаю XML с помощью XMLDSig для отправки на сервер портала системы электронных паспортов(СЭП).
Пробовал на версиях платформы 1С 8.3.10.2496 и 8.3.12.1531.

Для формирования тегов DigestValue, SignatureMethod, DigestMethod, SignatureValue использую сертификат с алгоритмом подписи GOST R 34.11-2012/34.10-2012 256 bit, Алгоритм Хэш GOST R 34.11-2012 256 bit.
Открытый ключ: ГОСТ Р 34.10-2012 256 бит. Идентификатор 1.2.643.7.1.1.1.1
Подпись удостоверяющего центра: ГОСТ Р 34.11-2012/34.10-2012 256 бит. Идентификатор 1.2.643.7.1.1.3.2

В параметрах XMLDsig в 1С указала:
XPathSignedInfo = "(//. | //@* | //namespace::*)[ancestor-or-self::*[local-name()='SignedInfo']]"
XPathПодписываемыйТег = "(//. | //@* | //namespace::*)[ancestor-or-self::soapenv:Envelope]/*[not(namespace::ds)]"
ИмяАлгоритмаПодписи = "GR 34.10-2012 256"
OIDАлгоритмаПодписи = "1.2.643.7.1.1.3.2"
ИмяАлгоритмаХеширования = "GR 34.11-2012 256"
OIDАлгоритмаХеширования = "1.2.643.7.1.1.2.2"
АлгоритмПодписи = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256"
АлгоритмХеширования = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"

Собрала xml, добавила в него теги Signature.
С помощью компоненты XMLDSig получаю значения тегов DigestValue, SignatureMethod, DigestMethod. А когда дохожу до SignatureValue возвращает ошибку "Криптографическая ошибка 0x80090016 ( =1)."
Не могу разобраться, в чем именно проблема, помогите, пожалуйста. KonvertSOAP.xml (3kb) загружен 9 раз(а). KanonizirovannyjjXMLdljaSignature.xml (1kb) загружен 5 раз(а). KonvertSOAPDannyeSertifikata.xml (7kb) загружен 6 раз(а).
Offline two_oceans  
#2 Оставлено : 13 мая 2021 г. 7:43:56(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день.
Код ошибки насколько знаю - "набор ключей не существует". Нужно проверить установлен ли сертификат с привязкой к закрытому ключу, вставлен ли токен (если контейнер на токене), есть ли у 1С права доступа к контейнеру и т.д.
Еще можно проверить, что разрядность 1С совпадает с разрядностью операционной системы.

Что до самого документа - на первый взгляд, в шаблоне подписи ошибка: данный шаблон предназначен (как и XPath строка) для подписания документа целиком (URI="", enveloped трансформ), но обычно в таком случае подпись располагается перед закрывающим тегом документа (в данном случае </soapenv:Envelope>). Если же подпись в специальном контейнере для подписи (SenderInformationSystemSignature), то обычно подписывается только часть документа (специальный контейнер вводится как раз чтобы неподписанную часть документа с различными служебными данными можно было изменить). Спецификация СЭП точно указывает подписывать весь документ?
Offline LiebeMein  
#3 Оставлено : 13 мая 2021 г. 8:51:01(UTC)
LiebeMein

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.04.2021(UTC)
Сообщений: 3
Российская Федерация
Откуда: Ulyanovsk

Автор: two_oceans Перейти к цитате
Добрый день.
Код ошибки насколько знаю - "набор ключей не существует". Нужно проверить установлен ли сертификат с привязкой к закрытому ключу, вставлен ли токен (если контейнер на токене), есть ли у 1С права доступа к контейнеру и т.д.
Еще можно проверить, что разрядность 1С совпадает с разрядностью операционной системы.

Что до самого документа - на первый взгляд, в шаблоне подписи ошибка: данный шаблон предназначен (как и XPath строка) для подписания документа целиком (URI="", enveloped трансформ), но обычно в таком случае подпись располагается перед закрывающим тегом документа (в данном случае </soapenv:Envelope>). Если же подпись в специальном контейнере для подписи (SenderInformationSystemSignature), то обычно подписывается только часть документа (специальный контейнер вводится как раз чтобы неподписанную часть документа с различными служебными данными можно было изменить). Спецификация СЭП точно указывает подписывать весь документ?


Добрый день! Да, для СЭП подписывать необходимо весь документ, у них своя структура xml.
Сертификат не на токене, в реестре. Каким образом можно проверить привязку к закрытому ключу?
Не поняла про разрядность 1С и ОС, подскажите, пожалуйста, что имеется ввиду?
Offline two_oceans  
#4 Оставлено : 13 мая 2021 г. 10:29:26(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: LiebeMein Перейти к цитате
Добрый день! Да, для СЭП подписывать необходимо весь документ, у них своя структура xml.
Сертификат не на токене, в реестре. Каким образом можно проверить привязку к закрытому ключу?
Не поняла про разрядность 1С и ОС, подскажите, пожалуйста, что имеется ввиду?
Понятно. Значит разработчики очередной ИС (СЭП) взяли кусочки от спецификации СМЭВ 3, не понимая в чем смысл каждого кусочка, и "переосмыслили" подписание как смогли.

Самые простые способы проверить привязку: 1) Пуск - все программы - Крипто-Про - сертификаты или сертификаты пользователя (далее - оснастка сертификаты), выбрать сертификат в хранилище Личные - двойной щелчок мышью. Там внизу должна быть строка примерно такая "Есть закрытый ключ для этого сертификата" (строка это признак что привязка есть, но может быть неверная привязка);
2) Пуск - все программы - Крипто-Про - Крипто-Про CSP (оно же панель управления КриптоПро) вкладка Сервис - Протестировать - по сертификату - выбрать сертификат - посмотреть в верхней строке "ошибок не обнаружено" (тут проверяется и привязка и ее верность и отсутствие проблем с ключом).

Разрядность имелось в виду, что на 64-разрядную операционную систему можно поставить как 32- так и 64-разрядную (x86-x64) версию 1с. На 32-разрядной ОС несовпадения быть не может.


Проблема может быть как раз в том, что контейнер (не сертификат) в реестре и служба 1С не имеет к нему доступа.

Отредактировано пользователем 13 мая 2021 г. 10:32:14(UTC)  | Причина: Не указана

Offline LiebeMein  
#5 Оставлено : 27 июля 2021 г. 15:13:05(UTC)
LiebeMein

Статус: Новичок

Группы: Участники
Зарегистрирован: 26.04.2021(UTC)
Сообщений: 3
Российская Федерация
Откуда: Ulyanovsk

При установке закрытого контейнера и открытой части сертификатов на локальный компьютер проблемы с получением значения для SignatureValue ушли. Сформировала конверт для отправки в СЭП, но на их стороне не проходит проверку, пишет ошибку связанную с подписью.
Решила протестировать на https://www.justsign.me/verifyqca/Verify/
получаю ошибку: "Произошла ошибка при проверке документа. Для указанного алгоритма подписи не удалось создать SignatureDescription."
Ниже блок с указанием алгоритмов, которые использую в xml.
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gоstr34112012-256"></ds:SignatureMethod>
<ds:Reference URI="">
<ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform></ds:Transforms>
<ds:DigestMethod Algorithm="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gоstr34112012-256"></ds:DigestMethod>
<ds:DigestValue>Bivs1Myt7ekW4GLQP1z/ve8QnUwAuPVqq0f0bTvoJno=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>

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