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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Baki111  
#1 Оставлено : 9 декабря 2022 г. 9:58:35(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Здравия Всем!
Разбираю документацию API МДЛП в целях интеграции и автоматизации маркировки.
Работаю на Python 3.10. Ситуация следующая:

1. Зарегистрировался на тестовом контуре(sb.mdlp.crpt.ru), в ЛК создал УС(учётная система), сгенерились необходимые id для запроса кода аутентификации.
2. Сделал запрос на тестовый контур, получил код аутентификации {"code": "d41c2054-8c95-4367-adec-41d16d20888c"}

На этом успехи закончились.

3. Следующий шаг - получение токена. Для этого в теле запроса указываю "code" и открепленную подпись кода в формате BASE64 (RFC2045) - всё по документации
(ниже пример тела запроса из документации):

{
"code": "d41c2054-8c95-4367-adec-41d16d20888c",
"signature":
"MIAGCSqGSIb3DQEHAqCAMIACAQExDDAKBgYqhQMCAgkFADCABgkqhkiG9w0BBwEAAKCAMIIBjjCCAT2gAwIBA
gIEWWJzHzAIBgYqhQMCAgMwMTELMAkGA1UEBhMCUlUxEjAQBgNVBAoMCUNyeXB0b1BybzEOMAwGA1UEAwwFQWx
pYXMwHhcNMTcxMTEzMTczMjI4WhcNMTgxMTEzMTczMjI4WjAxMQswCQYDVQQGEwJSVTESMBAGA1UECgwJQ3J5c
HRvUHJvMQ4wDAYDVQQDDAVBbGlhczBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4BA0MABEAIWARzAiI
81k4i4Gz8EC7Ic01653JX5PCUfvgCBTpLduYtbTwLOwmGFcZzw9bwsxQpALqhcdRHxtx1UEeNKJuMozswOTAOB
gNVHQ8BAf8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwIwEgYDVR0TAQH/BAgwBgEB/wIBBTAIBgYqhQMCAgM
DQQBL9CrIk0EgnMVr1J5dKbfXVFrhJxGxztFkTdmGkGJ6gHywB5Y9KpP67pv7I2bP1m1ej9hu+C17GSJrWgMgq
+UZAAAxggEFMIIBAQIBATA5MDExCzAJBgNVBAYTAlJVMRIwEAYDVQQKDAlDcnlwdG9Qcm8xDjAMBgNVBAMMBUF
saWFzAgRZYnMfMAoGBiqFAwICCQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxD
xcNMTcxMTMwMDkyMTU5WjAvBgkqhkiG9w0BCQQxIgQg+vo77XxU6eHIpoZxOwIk+gWY+JSv9lfa1TgOM/UW8ao
wCAYGKoUDAgIDBECJhWsLOQ1Wn4KntnGNL8KNZSpbpJ35E8NjyEio+Im5dLiLoqZotxGFlWMmYvBaPy8FHcAsT
qaEEJna7+CecOi/AAAAAAAA"
}

4. Для создания откреплённой подписи строки установил pycades. Следуя "Примеру использования библиотеки для создания и проверки отделённой подписи формата CAdES-BES по хэш-значению данных"

https://docs.cryptopro.ru/cades/pycades/pycades-samples/pycades-signhash-verifyhash

подписываю полученный "code", вставляю сигнатуру в тело запроса, но приходит error (Проверьте аутентификационные данные).
Обратил внимание на алгоритм, проверил - согласно доке поддерживается.

Вопрос: Правильно ли я вообще использую pycades? В какую сторону копать?
Видел на форуме несколько сообщений про МДЛП, значит есть люди, для которых это не стало проблемой, потому что тему про отделённую подпись не нашёл..

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

Offline Андрей *  
#2 Оставлено : 9 декабря 2022 г. 10:18:05(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,161
Мужчина
Российская Федерация

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
Здравствуйте.

Пока не понятно...

Если получен код: d41c2054-8c95-4367-adec-41d16d20888c
то почему в п.3 пишется он и значение ЭП, но там сертификат истёк 13.11.2018 и с указанным кодом проверка не проходит.

Alias чей сертификат? Или Вы просто привели пример, а код был в реальности другой?
Техническую поддержку оказываем тут
Наша база знаний
Offline Baki111  
#3 Оставлено : 9 декабря 2022 г. 10:29:40(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Приведён пример из документации. В тексте поста в скобках указал, что (пример тоже из доки).
То есть Вы предполагаете, что я выбираю не тот серт? Исключено, ибо другие специально удалил, оставил один единственный в системе (с которым вхожу в ЛК на МДЛП).

Отредактировано пользователем 9 декабря 2022 г. 10:30:29(UTC)  | Причина: Не указана

Offline Baki111  
#4 Оставлено : 9 декабря 2022 г. 10:38:17(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Здравствуйте.

Пока не понятно...

Если получен код: d41c2054-8c95-4367-adec-41d16d20888c
то почему в п.3 пишется он и значение ЭП...


Таков порядок аутентификации по документации:
1) Создание УС для генерации двух id;
2) Получение кода аутентификации (code) в ответ на все id;
3) Получение токена в ответ на code и откреплённой подписи этого кода в формате base64.

П.С. Сам был в шоке от этого слоёного пирога

Отредактировано пользователем 9 декабря 2022 г. 10:39:03(UTC)  | Причина: Не указана

Offline Baki111  
#5 Оставлено : 11 декабря 2022 г. 15:43:24(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Здравствуйте.

Пока не понятно...

Если получен код: d41c2054-8c95-4367-adec-41d16d20888c
то почему в п.3 пишется он и значение ЭП, но там сертификат истёк 13.11.2018 и с указанным кодом проверка не проходит.

Alias чей сертификат? Или Вы просто привели пример, а код был в реальности другой?


Андрей, добрый день.
Подскажите, как при помощи pycades сделать отделённую подпись строки?
Offline Андрей *  
#6 Оставлено : 11 декабря 2022 г. 18:42:57(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,161
Мужчина
Российская Федерация

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
Автор: cancer Перейти к цитате
Автор: Андрей * Перейти к цитате
Здравствуйте.

Пока не понятно...

Если получен код: d41c2054-8c95-4367-adec-41d16d20888c
то почему в п.3 пишется он и значение ЭП, но там сертификат истёк 13.11.2018 и с указанным кодом проверка не проходит.

Alias чей сертификат? Или Вы просто привели пример, а код был в реальности другой?


Андрей, добрый день.
Подскажите, как при помощи pycades сделать отделённую подпись строки?


Создание и проверка подписи

указать:
signedData.SignCades(signer, pycades.CADESCOM_CADES_BES, TRUE)

Цитата:

bDetached Вид подписи: отделенная (true) или совмещенная (false). По умолчанию совмещенная.


про SignCades
Техническую поддержку оказываем тут
Наша база знаний
Offline Baki111  
#7 Оставлено : 11 декабря 2022 г. 20:15:03(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате


Создание и проверка подписи

указать:
signedData.SignCades(signer, pycades.CADESCOM_CADES_BES, TRUE)

Цитата:

bDetached Вид подписи: отделенная (true) или совмещенная (false). По умолчанию совмещенная.


про SignCades


Как правильно верифицировать такую подпись? Поставил в VerifyCades True, однако выходит трэйс:

Цитата:
Traceback (most recent call last):
File "/home/airatbakiev/PycharmProjects/testpycades/main.py", line 23, in <module>
_signedData.VerifyCades(signature, pycades.CADESCOM_CADES_BES, True)
Exception: Invalid Signature. (0x80090006)


Решено.
Добавил _signedData.Content = signedData.Content
Verified successfully

Отредактировано пользователем 11 декабря 2022 г. 20:52:05(UTC)  | Причина: Не указана

Offline Baki111  
#8 Оставлено : 13 декабря 2022 г. 9:13:56(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
В итоге, на текущий момент, подходящую подпись для получения токена от МДЛП, получается создать только при помощи следующей команды:

./csptest -sfsign -sign -in <путь>/code.txt -out <путь>/out.txt -my <отпечаток сертификата> -detached -base64 -add

Подскажите, как при помощи pycades создать подпись, эквивалентную результату этой команды? Спасибо.
Offline Андрей *  
#9 Оставлено : 13 декабря 2022 г. 10:16:24(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,161
Мужчина
Российская Федерация

Сказал «Спасибо»: 618 раз
Поблагодарили: 2389 раз в 1880 постах
Автор: cancer Перейти к цитате
В итоге, на текущий момент, подходящую подпись для получения токена от МДЛП, получается создать только при помощи следующей команды:

./csptest -sfsign -sign -in <путь>/code.txt -out <путь>/out.txt -my <отпечаток сертификата> -detached -base64 -add

Подскажите, как при помощи pycades создать подпись, эквивалентную результату этой команды? Спасибо.


У Вас выше же успешно формировалась и проверялась отсоединенная подпись.


Отличие:
Утилита добавляет только сертификат подписанта,
в pycades явно указать CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY
Цитата:
= 2 Сохраняет только сертификат конечного пользователя.



на JS это выглядит так:
Код:

yield  oSigner.propset_Options(cadesplugin.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY);
Техническую поддержку оказываем тут
Наша база знаний
Offline Baki111  
#10 Оставлено : 13 декабря 2022 г. 10:23:03(UTC)
Baki111

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

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

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 1 раз в 1 постах
Да, отделённая подпись создавалась (и проверялась библиотекой). Но АПИ МДЛП не принимал эту подпись((, поэтому обратился к поддержке МДЛП, они подсказали вышеуказанную команду.

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