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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline evg99_04323  
#1 Оставлено : 7 февраля 2024 г. 7:47:53(UTC)
evg99_04323

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

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

Добрый день. Мы проходим API-интеграцию с банком и появилась необходимость подписывать ежедневные отчеты, полученные из банка по API, с помощью УКЭП. В инструкции, полученной от банка, содежится следующее:

Цитата:
Полученный отчёт подпишите с помощью УКЭП и передайте в банк отсоединённую подпись в формате Base64. Пример того как можно подписать данные см. ниже.

cryptcp.x64.exe -sign -f cert2.cer -dn "7840473679" -detached -pin password123 test.txt


Хотим автоматизировать подписание отчетов на C#, но не понимаем, какие есть варианты. Саму подпись с токена невозможно экспортировать, а .cer файл, который экспортиуется через cptools содержит только публичную часть ключа.

Реализуемя ли вообще наша затея или единственный вариант - подписывать все отчеты вручную?
Offline Андрей *  
#2 Оставлено : 7 февраля 2024 г. 20:12:12(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Здравствуйте.
Скачайте КриптоПро NET - sdk, там есть примеры . Или поищите на форуме, ключевые слова:cmssigner
+ ComputeSignature


https://learn.microsoft....?view=windowsdesktop-6.0


В примере не экспорт ключа, а опция добавления сертификата в cms из файла.
Техническую поддержку оказываем тут
Наша база знаний
Offline evg99_04323  
#3 Оставлено : 8 февраля 2024 г. 0:37:38(UTC)
evg99_04323

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

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

Спасибо за ва ответ. Я пробовал как в примере:


Код:
Initializer.Initialize();

var x509 = new X509Certificate2(File.ReadAllBytes(@"D:\certificate.cer"));
var contentInfo = new ContentInfo(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));
var signedCms = new SignedCms(contentInfo, true);
var cmsSigner = new CmsSigner(x509);
signedCms.ComputeSignature(cmsSigner);
var signature = signedCms.Encode();
Console.WriteLine($"Signature: {Convert.ToBase64String(signature)}");



Но получаю ошибку:

Цитата:
Could not determine signature algorithm for the signer certificate.


В certificate.cer, экпортированном через cptools, отсутвтвет приватный ключ.

Отредактировано пользователем 8 февраля 2024 г. 0:38:18(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 8 февраля 2024 г. 3:36:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Все верно, в сертификате никогда и не было приватного ключа.

X509 предлагаю инициировать из найденного сертификата в личном хранилище.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#5 Оставлено : 8 февраля 2024 г. 3:42:02(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
КриптоПро .NET и КриптоПро .NET SDK. примеры SDK\Examples\simple.zip\CMS\cs\DetachedSignature.cs
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#6 Оставлено : 8 февраля 2024 г. 3:55:31(UTC)
Андрей *

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

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

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Какую версию .net используете?


+
https://github.com/CryptoPro/libcore
Техническую поддержку оказываем тут
Наша база знаний
Offline evg99_04323  
#7 Оставлено : 8 февраля 2024 г. 8:34:06(UTC)
evg99_04323

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

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

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