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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline two_oceans  
#11 Оставлено : 28 декабря 2020 г. 12:47:04(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Смотря какого интерфейса.. COM у меня примера нет, делаю через низкоуровневые функции MS CryptoAPI 2.0. В принципе для данной задачи наверно подойдет и высокоуровневые функции MS CryptoAPI 2.0
Пример кода для Дельфи с использованием модуля JwaWinCrypt (модуль импортирует кучу заголовков из библиотек, желательно скачать версию модуля поновее) можно посмотреть в этой теме: https://www.cryptopro.ru...aspx?g=posts&t=17082
Вкратце, надо:
1. открыть хранилище и найти там нужный сертификат, например, по отпечатку (но можно вывести системное окно выбора сертификата пользователю). Упрощенная выдержка из кода, в buf двоичные данные отпечатка сертификата, bufLen их длина.

2. заполнить запись параметрами и передать в функцию (в примере в теме по ссылке). Разве что надо сейчас заменить алгоритм на гост-2012. Обнуление структуры обязательно ZeroMemory или FillChar, указание размера структуры обязательно, а вот везде заполнять 0 и nil после обнуления не обязательно.
3. Потом перекодировать результат в base64 (тут уж кто во что горазд, есть функция CryptBinaryToString в JwaWinCrypt, но и в самом Дельфи куча версий кодировщика)
4. Составить запрос и каким-то http компонентом отправить (опять же компонентов несколько)

Отредактировано пользователем 28 декабря 2020 г. 12:56:26(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Алексей Волгоград оставлено 28.12.2020(UTC)
Offline YuryG  
#12 Оставлено : 24 февраля 2021 г. 12:10:19(UTC)
YuryG

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

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

Автор: dmyudin Перейти к цитате
Добрый день.
Сразу скажу, что в сертификатах, подписях, шифровании я - нуб. Поэтому, возможно, элементарная скорее всего задача ставит меня третий день в тупик. Поэтому пишу сюда - вдруг кто поможет.

Для работы с API "Честный знак" требуется токен. Чтобы его получить, необходимо "подписать" строку, которую он выдает при отправке запроса на авторизацию, а затем отправить ее в тебе запроса POST обратно. Тогда вернётся токен и можно будет некоторое время использовать его API.
Проблема именно в "подписании" этой строки програмно (не через плагин браузера). Работать в результате должно на виндовом сервере, сейчас разработку веду под Win10.

Сертификат присутствует, через плагин браузера строка авторизации подписывается и затем воспринимается API ЧЗ. Т.е. тут всё ок.

Путем гугления и изучения сайта Крипто-Про я набрел на руководство разработчика - http://cpdn.cryptopro.ru
Оттуда я пробовал сначала примеры из "КриптоПро ЭЦП (Интерфейс COM)". Но не продвинулся из-за ошибки (при присвоении объекту CAdESCOM.CPSigner свойства Certificate ошибка "Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)"
Затем я пробовал собрать программу на примерах из "КриптоПро.NET". Там строка как-то подписывается, но результат на выходе очень сильно отличается от того, что возвращает браузер...

Направьте меня плз, в какую сторону мне копать, чтобы получить наконец от ЧЗ токен.
Я просмотрел "по-диагонали" этот форум, но есть сообщения, которые датируются 12-летней давностью, 5-летней... Не понятно, какой API сейчас актуальный, актуальны ли примеры из документации разработчика.

Спасибо!


У меня история похожая, полный нуб в теме...
Правда я не продвинулся дальше первого шага. Я безуспешно пытаюсь хотя бы вручную пройти авторизацию. Запросы отправляю через Postman.
Отправляю GET на https://elk.edo.crpt.tech/api/v1/session, затем подписываю полученную строку data тут https://www.cryptopro.ru...e/cades_bes_sample.html. Затем открываю подпись в Notepad++ , убираю /n и /r и отправляю полученную подпись на тот же https POST запросом. В ответ получаю интернал сервер еррор.
Разобрался кто-то какую сторону копать ))) ?

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

Offline dmi-viktor  
#13 Оставлено : 19 октября 2022 г. 5:46:07(UTC)
dmi-viktor

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

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

Сказал «Спасибо»: 2 раз
Автор: dmyudin Перейти к цитате
Добрый день.
Сразу скажу, что в сертификатах, подписях, шифровании я - нуб. Поэтому, возможно, элементарная скорее всего задача ставит меня третий день в тупик. Поэтому пишу сюда - вдруг кто поможет.

Для работы с API "Честный знак" требуется токен. Чтобы его получить, необходимо "подписать" строку, которую он выдает при отправке запроса на авторизацию, а затем отправить ее в тебе запроса POST обратно. Тогда вернётся токен и можно будет некоторое время использовать его API.
Проблема именно в "подписании" этой строки програмно (не через плагин браузера). Работать в результате должно на виндовом сервере, сейчас разработку веду под Win10.

Сертификат присутствует, через плагин браузера строка авторизации подписывается и затем воспринимается API ЧЗ. Т.е. тут всё ок.

Путем гугления и изучения сайта Крипто-Про я набрел на руководство разработчика - http://cpdn.cryptopro.ru
Оттуда я пробовал сначала примеры из "КриптоПро ЭЦП (Интерфейс COM)". Но не продвинулся из-за ошибки (при присвоении объекту CAdESCOM.CPSigner свойства Certificate ошибка "Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)"
Затем я пробовал собрать программу на примерах из "КриптоПро.NET". Там строка как-то подписывается, но результат на выходе очень сильно отличается от того, что возвращает браузер...

Направьте меня плз, в какую сторону мне копать, чтобы получить наконец от ЧЗ токен.
Я просмотрел "по-диагонали" этот форум, но есть сообщения, которые датируются 12-летней давностью, 5-летней... Не понятно, какой API сейчас актуальный, актуальны ли примеры из документации разработчика.

Спасибо!


Здравствуйте, у меня аналогичная задача. Подскажите пожалуйста какой вариант реализации удалось использовать для взаимодействия с Честным Знаком? Проект реализующий подписание на основе .NET Framework или .NET Core?

Отредактировано пользователем 19 октября 2022 г. 5:50:16(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#14 Оставлено : 24 октября 2022 г. 23:41:02(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 272 раз в 253 постах
Автор: dmi-viktor Перейти к цитате

Здравствуйте, у меня аналогичная задача. Подскажите пожалуйста какой вариант реализации удалось использовать для взаимодействия с Честным Знаком? Проект реализующий подписание на основе .NET Framework или .NET Core?


вопрос решается в рамках обращения на портале техподдержки №66404
Техническую поддержку оказываем тут
Наша база знаний
Offline Алексей Волгоград  
#15 Оставлено : 22 июля 2024 г. 13:16:05(UTC)
Алексей Волгоград

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

Группы: Участники
Зарегистрирован: 24.12.2020(UTC)
Сообщений: 3
ОАЭ

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Автор: dmi-viktor Перейти к цитате

Здравствуйте, у меня аналогичная задача. Подскажите пожалуйста какой вариант реализации удалось использовать для взаимодействия с Честным Знаком? Проект реализующий подписание на основе .NET Framework или .NET Core?


вопрос решается в рамках обращения на портале техподдержки №66404

Добрый день, а ссылку можно прислать где решается?
Offline Санчир Момолдаев  
#16 Оставлено : 22 июля 2024 г. 18:11:39(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 272 раз в 253 постах
ссылку нет.

кратко:
использовался Netframework 4.8
конструктор new SignedCms(contentInfo, false)
CmsSigner.IncludeOption( X509IncludeOption.EndCertOnly )
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.