Статус: Новичок
Группы: Участники
Зарегистрирован: 08.05.2014(UTC) Сообщений: 5
|
Здравствуйте.
Преамбула: есть xml запрос к серверу НБКИ в формате xml. Безопасность обеспечена цифровой подписью PKCS7 и кодированием в base64. Купил у вас cryptopro sdk.net, в консольный проект подключил сборки CryproPro.Sharpei ... Для подписи данных взял пример с# из образцов в sdk.
Код подписи:
static byte[] SignPKCS7(Byte[] msg, X509Certificate2 signerCert) { // Подписываем сообщение секретным ключом. // Создаем объект SignedCms
ContentInfo contentInfo = new ContentInfo(msg); SignedCms signedCms = new SignedCms(contentInfo);
CmsSigner cmsSigner = null; try { cmsSigner = new CmsSigner(signerCert); } catch (Exception ex) { Console.WriteLine("CmsSigner initialize error:" + ex.Message); }
signedCms.ComputeSignature(cmsSigner, false);
// Кодируем CMS/PKCS #7 сообщение. return signedCms.Encode(); }
signedCms.ComputeSignature выкидывает CryptographicException - Ключ не существует.
Тестировал на 3 разных ключах. Результат один и тот же. Crypto PRO установлен. Паролей на сертификатах нет.
Подскажите, в каком направлении копать. Заранее благодарен.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
А откуда берется signerCert? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.05.2014(UTC) Сообщений: 5
|
... X509Certificate2 certificate = new X509Certificate2(); certificate.Import("путь к файлу ecp"); ...
потом: SignPKCS7(msg, certificate);
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,719 Сказал «Спасибо»: 500 раз Поблагодарили: 2054 раз в 1594 постах
|
Автор: v.codemaster ... X509Certificate2 certificate = new X509Certificate2(); certificate.Import("путь к файлу ecp"); ...
потом: SignPKCS7(msg, certificate);
Файл ecp - это файл с сертификатом (.cer)? |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Может стоит воспользоваться кодом из примера? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.05.2014(UTC) Сообщений: 5
|
to Андрей: да, путь к файлу сертификата .cer. Сертификат зарегистрирован в корневом хранилище.
to maxdm: при любом варианте получения экземпляра класса X509Certificate2: импортом из файла, поиском в хранилище через X509Store, или через диалог X509Certificate2UI результат один и тот же - Ключ не существует.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,719 Сказал «Спасибо»: 500 раз Поблагодарили: 2054 раз в 1594 постах
|
Автор: v.codemaster to Андрей: да, путь к файлу сертификата .cer. Сертификат зарегистрирован в корневом хранилище.
to maxdm: при любом варианте получения экземпляра класса X509Certificate2: импортом из файла, поиском в хранилище через X509Store, или через диалог X509Certificate2UI результат один и тот же - Ключ не существует.
Что возвращает тестирование это сертификата через Панель управления\КриптоПРО CSP\Сервис\Протестировать ? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.05.2014(UTC) Сообщений: 5
|
Возможно проблема здесь.
Не могу выполнить тестирование. Имя ключевого контейнера пустое. Нажимаю кнопку Обзор - список ключевых контейнеров пустой. Нажимаю кнопку По сертификату - выпадает окно с зарегистрированными сертификатами в корневом хранилище, выбираю нужный, поле - имя ключевого контейнера так и остается пустым, видимо в связи с этим кнопка Далее формы тестирования сертификата не доступна. У меня файл подписи на hdd. Если я правильно понимаю, для его тестирования нужно создать контейнер, например на флопике?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,719 Сказал «Спасибо»: 500 раз Поблагодарили: 2054 раз в 1594 постах
|
Автор: v.codemaster Возможно проблема здесь.
Не могу выполнить тестирование. Имя ключевого контейнера пустое. Нажимаю кнопку Обзор - список ключевых контейнеров пустой. Нажимаю кнопку По сертификату - выпадает окно с зарегистрированными сертификатами в корневом хранилище, выбираю нужный, поле - имя ключевого контейнера так и остается пустым, видимо в связи с этим кнопка Далее формы тестирования сертификата не доступна. У меня файл подписи на hdd. Если я правильно понимаю, для его тестирования нужно создать контейнер, например на флопике? Контейнера нет с закрытым ключом и есть только сам сертификат ("файл подписи")? Делайте как положено... Контейнер, ключи, сертификат... можно в тестовом УЦ Крипто-ПРО получить (открывать в IE) ... |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.05.2014(UTC) Сообщений: 5
|
to Андрей: Спасибо. Сгенерировал тестовый сертификат с контейнером. Подписка данных с ним работает. Вопрос можно считать решенным.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close