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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline NIkolaySekretov  
#1 Оставлено : 17 июля 2015 г. 16:37:49(UTC)
NIkolaySekretov

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

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

Сказал(а) «Спасибо»: 1 раз
Всем доброго времени суток.

Есть маленькая программа на C#, которая является почти полной копией примера из .NET SDK, которая делает следующее: читает из хранилища компьютера сертификат по серийнику, и генерирует подпись для строки, используя этот сертификат.

Код выглядит примерно так -


на ComputeSignature вываливается ошибка
Цитата:

System.Security.Cryptography.CryptographicException: Неправильный открытый ключ поставщика.

в System.Security.Cryptography.Pkcs.PkcsUtils.CreateSignerEncodeInfo(CmsSigner signer, Boolean silent)
в System.Security.Cryptography.Pkcs.SignedCms.Sign(CmsSigner signer, Boolean silent)
в System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature(CmsSigner signer, Boolean silent)


При этом:
  1. на машине, где запускается программа, установлен КриптоПро CSP и КриптоПро .NET
  2. сертификат успешно находится
  3. cmsSigner.DigestAlgorithm.FriendlyName = ГОСТ Р 34.11-94
  4. программа запускается от пользователя у которого есть полные права на приватные ключи сертификата
  5. сертификат находится в контейнере, который защищен паролем, который мне неизвестен
  6. в оснастке "сертификаты" сертификат отображается как валидный (корневой сертификат также присутствует)


Вопросы следующие:
  1. как исправить данную ошибку?
  2. можно ли решить проблему без знания пароля на контейнер Крипто Про?


osinfo.xml (62kb) загружен 1 раз(а). osinfo.xml (62kb) загружен 1 раз(а).

Отредактировано пользователем 17 июля 2015 г. 16:49:39(UTC)  | Причина: Не указана

Offline Kirill Sobolev  
#2 Оставлено : 17 июля 2015 г. 17:42:47(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
на ComputeSignature вываливается ошибка

Цитата:
5. сертификат находится в контейнере, который защищен паролем, который мне неизвестен

Для подписи нужен закрытый ключ, соответственно без пароля подписать не удастся.
Цитата:
как исправить данную ошибку?

Попробуйте
Код:
signedCms.ComputeSignature(cmsSigner,false);

Должно появиться окно с запросом пароля.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Кирилл Соболев за этот пост.
NIkolaySekretov оставлено 20.07.2015(UTC)
Offline Boris@Serezhkin.com  
#3 Оставлено : 20 июля 2015 г. 8:08:45(UTC)
Boris@Serezhkin.com

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

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Извините, а лицензия на КриптоПро CSP не истекла?
Сталкивался с таким фактом:
по истечении трех месяцев (установка без ввода лицензии)
для некоторых сборок CSP 3.6
CAPICOM, у меня используется, начинает выдавать
интересные ошибки:
то контейнер не правильный, то ключ в контейнере порушен....
Проверьте лицензии.

PS: Что касается ПИН кода, или пароля на контейнер закрытого ключа
издатели обычно устанавливают пин код "по умолчанию"
цифирки "12345678" или "1234567890" и если пользователь не менял пин код
то можно спросить у издателя - "А какой у вас пин код по умолчанию?"

Отредактировано пользователем 20 июля 2015 г. 8:16:48(UTC)  | Причина: Не указана

Offline NIkolaySekretov  
#4 Оставлено : 20 июля 2015 г. 15:03:08(UTC)
NIkolaySekretov

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

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

Сказал(а) «Спасибо»: 1 раз
Спасибо отписавшимся в теме. Попробую еще уточнить ситуацию:

Если не указывать режим silent, то появляется окно для ввода пароля.
После ввода пароля на контейнер складывалось ощущение, что программа зависла - просто ничего не происходило и все.

Получил тестовый сертификат, тестирую с ним (на него пароль мне известен).

Выяснил, что через примерно минуту(!) после ввода пароля подпись все же генерируется, и соответственно выполнение идет далее.
(С боевым сертификатом была та же история, но я не знал что процесс подписи все еще идет, и выходил из своей утилиты, думая, что она "зависла")

@Boris@Serezhkin.com:
КриптоПро свежеустановленный, но без лицензии. По поводу пин-кода - см. выше.

Теперь вопрос такой - почему так долго происходит процесс генерации подписи?



Offline NIkolaySekretov  
#5 Оставлено : 20 июля 2015 г. 15:11:04(UTC)
NIkolaySekretov

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: NIkolaySekretov Перейти к цитате
Теперь вопрос такой - почему так долго происходит процесс генерации подписи?


Отвечу себе же.

Код:
CmsSigner cert = new CmsSigner(signer) {IncludeOption = X509IncludeOption.EndCertOnly}; 

решило проблему.

Offline Boris@Serezhkin.com  
#6 Оставлено : 20 июля 2015 г. 18:06:53(UTC)
Boris@Serezhkin.com

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

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: NIkolaySekretov Перейти к цитате
Код:
CmsSigner cert = new CmsSigner(signer) {IncludeOption = X509IncludeOption.EndCertOnly}; 

решило проблему.

Ну вот еще один человек наступил на эти грабли.
Предыдущий удивлялся что подпись у него на 5 кб больше и портал не принимает.

Может в FAQу внести?

И еще не понимаю почему в шарпе в подпись включается цепочка
сертификатов по умолчанию?
Это же надо их извлечь, проверить....
Как я помню в CryptoAPI в подпись включается только один сертификат.
И чтобы включить цепочку даже не придумаю навскидку как это сделать?

Offline Максим Коллегин  
#7 Оставлено : 20 июля 2015 г. 19:16:30(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,453
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
Долго - это особенность .net - тоже на форуме было. что-то связанное с поиском в AD.
Знания в базе знаний, поддержка в центре поддержки
Offline Максим Коллегин  
#8 Оставлено : 20 июля 2015 г. 19:17:55(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,453
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 748 раз в 643 постах
Знания в базе знаний, поддержка в центре поддержки
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.