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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline user.b  
#1 Оставлено : 24 апреля 2014 г. 18:15:49(UTC)
user.b

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

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

Добрый день. Не мог найти подходящей темы. Прошу прощения если дублирую что-то.
Мне нужно подписать данные ключом, выбранным пользователем. Делаю выбор функцией CryptUIDlgSelectCertificateFromStore, получаю контекст сертификата. Как мне можно получить контекст провайдера, зная контекст сертификата?
Делал, передавая в CryptAcquireContext имя хранилища, но как узнать его имя или список возможных имен?

Пробовал подписывать CryptSignMessage, передав контекст сертификата через CRYPT_SIGN_MESSAGE_PARA. Но она заканчивается ошибкой. Не мог понять...
Подскажите, пожалуйста, возможно у меня вообще не правильный подход.
Спасибо!
Offline Юрий  
#2 Оставлено : 24 апреля 2014 г. 18:26:51(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 675
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 95 раз в 68 постах
Автор: user.b Перейти к цитате
Добрый день. Не мог найти подходящей темы. Прошу прощения если дублирую что-то.
Мне нужно подписать данные ключом, выбранным пользователем. Делаю выбор функцией CryptUIDlgSelectCertificateFromStore, получаю контекст сертификата. Как мне можно получить контекст провайдера, зная контекст сертификата?
Делал, передавая в CryptAcquireContext имя хранилища, но как узнать его имя или список возможных имен?

Пробовал подписывать CryptSignMessage, передав контекст сертификата через CRYPT_SIGN_MESSAGE_PARA. Но она заканчивается ошибкой. Не мог понять...
Подскажите, пожалуйста, возможно у меня вообще не правильный подход.
Спасибо!

Между сертификатом и криптопровайдером изначально вообще отсутствует какая-либо связь. То есть сертификат это по сути только набор полей с какими-то значениями. То, что в одном из полей сохранена подпись, сделанная с помощью какого-то криптопровайдера, никак не может говорить о какой-то связи.

Наиболее перспективная функция в вашем случае - CryptAcquireCertificatePrivateKey. Здесь есть возмжность импортировать публичный ключ из сертификата с одновременным получением контекста криптопровайдера.

Есть функции связывания контейнера ключа с сертификатом, но я думаю что пока это лишнее в вашем случае.
С уважением,
Юрий Строжевский
Offline Максим Коллегин  
#3 Оставлено : 24 апреля 2014 г. 18:41:17(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
В контексте сертификата может быть прописана ссылка на ключ, если прописана, то вышеприведенная функция поможет.
Знания в базе знаний, поддержка в центре поддержки
Offline user.b  
#4 Оставлено : 24 апреля 2014 г. 18:54:32(UTC)
user.b

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

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

Получил через CryptAcquireCertificatePrivateKey, спасибо.

Отредактировано пользователем 25 апреля 2014 г. 15:08:03(UTC)  | Причина: Не указана

Offline user.b  
#5 Оставлено : 24 апреля 2014 г. 22:28:12(UTC)
user.b

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

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

Автор: maxdm Перейти к цитате
В контексте сертификата может быть прописана ссылка на ключ, если прописана, то вышеприведенная функция поможет.

А где эта ссылка, в какой структуре?
Если ключ хранится на носителе, как можно открыть контекст провайдера для его, что указать в имени хранилища?
Offline user.b  
#6 Оставлено : 24 апреля 2014 г. 22:46:02(UTC)
user.b

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

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

И к теме. Вот здесь https://www.cryptopro.ru...g=posts&t=63#post244 сказано, что связь таки есть, да? Можно этот отпечаток программно из контекста сертификата получить?
Offline Максим Коллегин  
#7 Оставлено : 25 апреля 2014 г. 4:07:34(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
Только так
CertGetCertificateContextProperty

CERT_KEY_PROV_INFO_PROP_ID

Отредактировано пользователем 25 апреля 2014 г. 4:10:52(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в центре поддержки
Offline user.b  
#8 Оставлено : 25 апреля 2014 г. 13:17:39(UTC)
user.b

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

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

Автор: maxdm Перейти к цитате
Только так
CertGetCertificateContextProperty

CERT_KEY_PROV_INFO_PROP_ID

Да, спасибо.
А скажите как обратиться к ключу, если его сертификат не установлен? Например, он вставлен на сменном носителе. Я так понимаю, CryptUIDlgSelectCertificateFromStore в этом случае не поможет.
PS Всем спасибо за помощь. И еще раз прошу прощения если задаю банальные вопросы, первый раз столкнулся со всем этим и разобраться сам не смог.

Offline Максим Коллегин  
#9 Оставлено : 25 апреля 2014 г. 15:28:28(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
Можно открыть носитель по имени считывателя или перечислить все контейнеры в системе. Поищите здесь, вопрос обсуждался.
Знания в базе знаний, поддержка в центре поддержки
Offline user.b  
#10 Оставлено : 25 апреля 2014 г. 18:25:06(UTC)
user.b

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

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

Автор: maxdm Перейти к цитате
Можно открыть носитель по имени считывателя или перечислить все контейнеры в системе. Поищите здесь, вопрос обсуждался.

Да, нашел кое-что, понял. Спасибо.
Дело в том, что у меня сейчас только ключи от вашего тестового УЦ. В конце операции генерируется сертификат с ключами. Я могу эти ключи использовать как-то не устанавливая сертификат?
Или я должен сгенерить ключи сам и указать контейнер на них в УЦ с опцией Использовать существующий набор ключей?

Отредактировано пользователем 25 апреля 2014 г. 18:30:25(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.