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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline PashaTurokME2019  
#1 Оставлено : 18 ноября 2019 г. 15:30:25(UTC)
PashaTurokME2019

Статус: Участник

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

Доброго времени суток, уважаемые форумчане

Не могу решить задачу по подписанию SOAP-конверта для СМЭВ.

SOAP, который подписываю:
Код:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<env:Header>
   <wsse:Security env:actor="http://smev.gosuslugi.ru/actors/smev"
           xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
           ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
           wsu:Id="SenderCertificate">
      </wsse:BinarySecurityToken>
    </wsse:Security>
</env:Header>
<env:Body wsu:id="body">
<esia:Identification xmlns:esia="http://mks.esia.rstyle.ru/" xmlns="http://smev.gosuslugi.ru/rev120315">
<Message>
<Sender>
<Code>TEST00001</Code>
<Name>Шлюз СМЭВ</Name>
</Sender>
<Recipient>
<Code>ISIA01001</Code>
<Name>Electronic system identification and authentication</Name>
</Recipient>
<Originator>
<Code>TEST00001</Code>
<Name>Шлюз СМЭВ</Name>
</Originator>
<Service>
<Mnemonic>ESIARegister</Mnemonic>
<Version>1.00</Version>
</Service>
<TypeCode>OTHR</TypeCode>
<Status>REQUEST</Status>
<Date>2016-08-02T10:37:05.059+03:00</Date>
<ExchangeType>0</ExchangeType>
<CaseNumber>Test</CaseNumber>
</Message>
<MessageData>
<AppData>
<esia:passportSeries>1111</esia:passportSeries>
<esia:passportNumber>111111</esia:passportNumber>
<esia:firstname>XXXXX</esia:firstname>
<esia:lastname>XXXXXXX</esia:lastname>
<esia:middlename>XXXXXXX</esia:middlename>
<esia:mobile>+1(111)1111111</esia:mobile>
<esia:snils>111-111-111 11</esia:snils>
<esia:inn>111111111111</esia:inn>
</AppData>
</MessageData>
</esia:Identification>
</env:Body>
</env:Envelope>




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

Цитата:
Nov 18, 2019 3:27:53 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.40035
Nov 18, 2019 3:27:53 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Проверяем с помощью сертификата ......

Проверка ЭЦП: true



При проверке на https://smev.gosuslugi.r...ortal/services-tools.jsp такой результат:
Screenshot from 2019-11-18 13-43-57.png (137kb) загружен 14 раз(а).

В кодах ошибок СМЭВ, написано следующее для ошибки "Неверная ЭП сообщения":

Цитата:
1. Содержимое подписываемого тега изменено
после подписания.
2. Используемые ОИВом библиотеки инвертируют
подпись. В этом случае необходимо побитово
инвертировать подпись перед внесением в XML.
Таким образом, данное сообщение об ошибке
говорит о том, что запрос, который Вы отсылаете к
сервису имеет некорректную ЭЦП.
Проверка подписи происходит следующим
образом:
- в СМЭВ поступает запрос;
- канонизируется элемент SignedInfo с помощью
алгоритма c14n;
- далее расшифровывается SignatureValue с
помощью открытого ключа сертификата – x1;
- берется SignedInfo и считается от него хэш – x2,
если x1 не равен x2, СМЭВ возвращает ошибку
«Неверная ЭП сообщения. Если же х1 = х2, то
проверка переходит на следующий шаг;
- считается хэш от body запроса – y1 по методу
указанному в DigestMethod. Из DigestValue
получаем – y2. Если y1 не равен y2, то СМЭВ
возвращает ошибку "Неверная ЭП сообщения".



Подскажите, пожалуйста, в чем ошибка и как ее исправить?

Отредактировано пользователем 6 декабря 2019 г. 13:36:56(UTC)  | Причина: Не указана

Offline PashaTurokME2019  
#2 Оставлено : 18 ноября 2019 г. 21:30:26(UTC)
PashaTurokME2019

Статус: Участник

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

Весь порядок действий (можно воспроизвести):

1) установить jdk1.8.0_151
2) установить jcp-2.0.40035
3) скопировать jcp-2.0.40035/dependencies в jdk1.8.0_151/jre/lib/ext
3) установить одну подпись
4) git clone https://github.com/PashaTurok/smev-signer.git
5) в классе me.pavelk.smev2.signer.Smev2Signer устанавливаем PASSWORD и BASE_DIR (путь к папке с проектом).
6) запускаем Smev2Signer

Результат:
Цитата:

Nov 18, 2019 9:29:03 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.40035
Nov 18, 2019 9:29:03 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
Проверяем с помощью сертификата (выводятся данные по сертификату)
Проверка ЭЦП: true
Проверка ЭЦП в сервисе СМЭВ: код ошибки = 3, описание = Неверная ЭП сообщения


Подскажите, пожалуйста, как решить данную проблему. Все посты, которые я нашел доходят
только до этой ошибки.

Отредактировано пользователем 18 ноября 2019 г. 21:37:13(UTC)  | Причина: Не указана

Offline PashaTurokME2019  
#3 Оставлено : 6 декабря 2019 г. 13:15:11(UTC)
PashaTurokME2019

Статус: Участник

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

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