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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Иван Бахтин  
#1 Оставлено : 5 марта 2021 г. 9:48:20(UTC)
Иван Бахтин

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

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

Сказал(а) «Спасибо»: 5 раз
Здравствуйте!
Делаю вход на свой сайт через Госуслуги. Использую квалифицированную ЭЦП выданную УД. В документации госуслуг есть параметр, который должен быть отправлен:
Цитата:
<client_secret> – подпись запроса в формате PKCS#7 detached signature в кодировке UTF-8 от значений четырех параметров HTTP–запроса: scope, timestamp, clientId, state (без разделителей). <client_secret> должен быть закодирован в формате base64 url safe. Используемый для проверки подписи сертификат должен быть предварительно зарегистрирован в ЕСИА и привязан к учетной записи системы-клиента в ЕСИА. ЕСИА поддерживает сертификаты в формате X.509. ЕСИА поддерживает алгоритм формирования электронной подписи ГОСТ Р 34.10-2012 и алгоритм криптографического хэширования ГОСТ Р 34.11-2012.


Я собираю строку и шифрую её как указано в примере на вашем сайте. Но сервера госуслуг выдают ошибку "Подпись в параметре секрета клиента не проверена."

В связи с чем есть несколько вопросов:
  • подходит ли данный метод шифрования для моего случая или может быть использовать другой?
  • и если подходит, то как изменить тип подписи? (т.к. на сайте не нашёл нужной информации)
Offline Санчир Момолдаев  
#2 Оставлено : 10 марта 2021 г. 20:00:15(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
Автор: Иван Бахтин Перейти к цитате
Здравствуйте!
Делаю вход на свой сайт через Госуслуги. Использую квалифицированную ЭЦП выданную УД. В документации госуслуг есть параметр, который должен быть отправлен:
Цитата:
<client_secret> – подпись запроса в формате PKCS#7 detached signature в кодировке UTF-8 от значений четырех параметров HTTP–запроса: scope, timestamp, clientId, state (без разделителей). <client_secret> должен быть закодирован в формате base64 url safe. Используемый для проверки подписи сертификат должен быть предварительно зарегистрирован в ЕСИА и привязан к учетной записи системы-клиента в ЕСИА. ЕСИА поддерживает сертификаты в формате X.509. ЕСИА поддерживает алгоритм формирования электронной подписи ГОСТ Р 34.10-2012 и алгоритм криптографического хэширования ГОСТ Р 34.11-2012.


Я собираю строку и шифрую её как указано в примере на вашем сайте. Но сервера госуслуг выдают ошибку "Подпись в параметре секрета клиента не проверена."

В связи с чем есть несколько вопросов:
  • подходит ли данный метод шифрования для моего случая или может быть использовать другой?
  • и если подходит, то как изменить тип подписи? (т.к. на сайте не нашёл нужной информации)


Добрый день!
судя по всему они ожидают подпись а не зашифрованный EnvelopedData
попробуйте с этим примером
но он сделает с cades-bes. примут ли они cades-bes надо проверять
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
Иван Бахтин оставлено 19.03.2021(UTC)
Offline Иван Бахтин  
#3 Оставлено : 19 марта 2021 г. 14:49:32(UTC)
Иван Бахтин

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

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

Сказал(а) «Спасибо»: 5 раз
Здравствуйте!
Я тоже пришёл к выводу, что использовал не тот метод. Я переписал свой код:
Цитата:
# работа с сертификатом
store = pycades.Store()
store.Open(pycades.CADESCOM_CONTAINER_STORE, pycades.CAPICOM_MY_STORE, pycades.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED)
certs = store.Certificates
assert(certs.Count != 0), "Certificates with private key not found"

signer = pycades.Signer()
signer.Certificate = certs.Item(1)
signer.CheckCertificate = True
signer.TSAAddress = 'Адрес службы штампов времени'

signedData = pycades.SignedData()
signedData.ContentEncoding = pycades.CADESCOM_PKCS7_TYPE
signedData.Content = f"{scope}{my_timestamp_code}{client_id}{state}"
signature = signedData.Sign(signer, True, pycades.CADESCOM_ENCODE_BASE64)

На последней строке возникает ошибка
Цитата:
Exception: The parameter is incorrect. (0x80070057)

В "signer.TSAAddress = 'Адрес службы штампов времени'" вставлен реальный адрес. Подскажите, пожалуйста, где я ошибся?

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

Offline Ситдиков Денис  
#4 Оставлено : 19 марта 2021 г. 17:27:05(UTC)
Ситдиков Денис

Статус: Администратор

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 29 раз в 20 постах
Добрый день!

Код:
signedData.ContentEncoding = pycades.CADESCOM_PKCS7_TYPE


PKCS7 - это тип подписи, а не кодировка. Пример задания ContentEncoding можно посмотреть в примере.
Offline Denisekat  
#5 Оставлено : 7 ноября 2022 г. 10:40:11(UTC)
Denisekat

Статус: Активный участник

Группы: Участники
Зарегистрирован: 30.08.2022(UTC)
Сообщений: 34

Сказал(а) «Спасибо»: 7 раз
Добрый день! Получилось ли решить задачу, особенно в свете последних изменений?

Стоит аналогичная задача авторизовать пользователя с использованием госуслуг(ЕСИА).
Вопрос по cades-bes в этой теме без ответа..
Offline Иван Бахтин  
#6 Оставлено : 7 ноября 2022 г. 11:39:32(UTC)
Иван Бахтин

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

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

Сказал(а) «Спасибо»: 5 раз
Здравствуйте!
Полностью использовать данную библиотеку не получится. Т.к. библиотека формирует подпись в новом формате (этот ответ есть на данном форуме), а гис использует старый формат. Получается вам нужно собрать XML и подписать его.
Offline igorkud90  
#7 Оставлено : 14 ноября 2022 г. 16:57:44(UTC)
igorkud90

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

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

Добрый день!
При инициализации обьекта Certificate куда-то утекает память.

Выполняю в консоли инструкцию ниже, память у процесса сразу улетает в 200мб:
Цитата:
import pycades

for i in range(10000):
pycades.Certificate()


Кто-нибудь сталкивался?
Offline Андрей *  
#8 Оставлено : 14 ноября 2022 г. 18:18:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: igorkud90 Перейти к цитате
Добрый день!
При инициализации обьекта Certificate куда-то утекает память.

Выполняю в консоли инструкцию ниже, память у процесса сразу улетает в 200мб:
Цитата:
import pycades

for i in range(10000):
pycades.Certificate()


Кто-нибудь сталкивался?



по 2кб на объект, много или что?

а если 100к объектов создать?
Техническую поддержку оказываем тут
Наша база знаний
Offline igorkud90  
#9 Оставлено : 14 ноября 2022 г. 18:21:35(UTC)
igorkud90

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

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

Автор: Андрей * Перейти к цитате
Автор: igorkud90 Перейти к цитате
Добрый день!
При инициализации обьекта Certificate куда-то утекает память.

Выполняю в консоли инструкцию ниже, память у процесса сразу улетает в 200мб:
Цитата:
import pycades

for i in range(10000):
pycades.Certificate()


Кто-нибудь сталкивался?



по 2кб на объект, много или что?

а если 100к объектов создать?


Вопрос больше в том, почему обьекты не утилизируются из памяти. Если сервис работает непрерывно с большим количеством обращений, то через сутки выедается вся доступная память на машине.
Offline Андрей *  
#10 Оставлено : 14 ноября 2022 г. 18:27:28(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: igorkud90 Перейти к цитате

Вопрос больше в том, почему обьекты не утилизируются из памяти. Если сервис работает непрерывно с большим количеством обращений, то через сутки выедается вся доступная память на машине.


Может сервис должен как-то сообщать, что объекты больше не нужны?
Как с этим обстоят дела в Python?

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