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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline alex303  
#1 Оставлено : 11 апреля 2018 г. 10:15:19(UTC)
alex303

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день,

Вопрос первый.

Есть сертификат с запароленным контейнером закрытого ключа.
Хочу зашифровать/расшировать узел xml-документа с помощью сертификата (примерно как в примерах cryptopro sdk) но категорически не хочу окно ввода пин'а ибо сервер...

Проблема следующая: при расшифровке узла xml'я, и при _не задании_ пин кода случается окошко ввода этого самого пина.
запрос пина вызывает вот этот метод: CPEncryptedXml.DecryptKeyClass

Например, при вычислении подписи, метод ComputeSignature имеет параметр silent, и при наличии пина на контейнер и не задании самого пина случается CryptographicException, что логично.
Но аналогичного механизма при расшифровке xml'я (аналог параметра silent) я не нашел. Как быть?

Вопрос второй.

Если я устанавливаю пин-код на контейнер в коде:

((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword("12345");

то как потом его сбросить (чтобы при последующем вызове без указания пин-кода случилось исключение/окно запроса пин-кода)?

Пробовал делать так:

certificate.PrivateKey.Dispose();
certificate.Reset();

но, после магии в CPEncryptedXml.DecryptKeyClass закрытый ключ все равно доступен без пина.


ps.
CSP 4.0.9914
версия шарпея 1.0.6397.0





Offline Максим Коллегин  
#2 Оставлено : 11 апреля 2018 г. 15:00:18(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
На сервере лучше бы использовать контейнер без пина.
Для сброса пина видимо нужно использовать вызовы p\invoke CryptSetProvParam(PP_SIGNATURE_PIN, NULL)

В следующих версиях КриптоПро .NET должен работать этот вызов:
((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword(null);
Знания в базе знаний, поддержка в техподдержке
Offline alex303  
#3 Оставлено : 11 апреля 2018 г. 15:09:15(UTC)
alex303

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Максим Коллегин Перейти к цитате
На сервере лучше бы использовать контейнер без пина.

Этим я никак не могу управлять...

Автор: Максим Коллегин Перейти к цитате

В следующих версиях КриптоПро .NET должен работать этот вызов:
((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword(null);


Во!Вот это будет прям очень супер... буду ждать.
Спс.
Offline Максим Коллегин  
#4 Оставлено : 12 апреля 2018 г. 13:42:10(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 620 раз в 552 постах
Сделали. Выложил в директории 1.0.6675.0
Протестируйте и отпишите по возможности - выложу для всех.
Знания в базе знаний, поддержка в техподдержке
Offline alex303  
#5 Оставлено : 12 апреля 2018 г. 17:43:34(UTC)
alex303

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Максим Коллегин Перейти к цитате

Протестируйте и отпишите по возможности - выложу для всех.


На первый взгляд, все работает как надо... По крайней мере, модульные тесты, которые раньше падали теперь работают... Спасибо за оперативность!
Еще бы педаль для EncryptedXml, чтоб вместо запроса пина вываливался эксепшн - было бы вообще отлично.

Offline a.shandov  
#6 Оставлено : 23 декабря 2019 г. 17:56:46(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Максим Коллегин Перейти к цитате
На сервере лучше бы использовать контейнер без пина.


А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой.

Отредактировано пользователем 23 декабря 2019 г. 17:58:55(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#7 Оставлено : 23 декабря 2019 г. 18:27:35(UTC)
Андрей *

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

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

Сказал «Спасибо»: 404 раз
Поблагодарили: 1649 раз в 1263 постах
Автор: a.shandov Перейти к цитате
Автор: Максим Коллегин Перейти к цитате
На сервере лучше бы использовать контейнер без пина.


А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой.


Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него.
Техническую поддержку оказываем тут
Наша база знаний
Offline a.shandov  
#8 Оставлено : 24 декабря 2019 г. 10:25:02(UTC)
a.shandov

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

Группы: Участники
Зарегистрирован: 23.12.2019(UTC)
Сообщений: 12
Беларусь
Откуда: Минск

Автор: Андрей Писарев Перейти к цитате
Автор: a.shandov Перейти к цитате
Автор: Максим Коллегин Перейти к цитате
На сервере лучше бы использовать контейнер без пина.


А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой.


Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него.


Я при создании не задаю пароль. Я работаю c SDK, поэтому ручные действия в CSP не подходят. И я использую подпись без сертификата, на закрытом и открытом ключах.
Offline Андрей Писарев  
#9 Оставлено : 24 декабря 2019 г. 11:38:24(UTC)
Андрей *

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

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

Сказал «Спасибо»: 404 раз
Поблагодарили: 1649 раз в 1263 постах
Автор: a.shandov Перейти к цитате
Автор: Андрей Писарев Перейти к цитате
Автор: a.shandov Перейти к цитате
Автор: Максим Коллегин Перейти к цитате
На сервере лучше бы использовать контейнер без пина.


А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой.


Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него.


Я при создании не задаю пароль. Я работаю c SDK, поэтому ручные действия в CSP не подходят. И я использую подпись без сертификата, на закрытом и открытом ключах.


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