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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Ильшат Абшарипов  
#1 Оставлено : 25 января 2008 г. 16:52:02(UTC)
Ильшат Абшарипов

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

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

Добрый день.

Как закрытый ключ связать с сертификатом? Есть импортированная в хранилище ключевая пара, мне надо, чтобы он был привязан к сертификату.

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

Offline Юрий  
#2 Оставлено : 25 января 2008 г. 17:43:15(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
CertSetCertificateContextProperty
С уважением,
Юрий Строжевский
Offline Ильшат Абшарипов  
#3 Оставлено : 25 января 2008 г. 17:50:13(UTC)
Ильшат Абшарипов

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

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

Прекрасно :)
А какие параметры передавать в эту функцию? Если не сложно, то дайте код.
Offline Юрий  
#4 Оставлено : 25 января 2008 г. 18:00:16(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Я в Вас верю - сами догадаетесь какие параметры туда передавать.
Главное - наличие MSDN, где можно про эти параметры почитать :)
С уважением,
Юрий Строжевский
Offline Ильшат Абшарипов  
#5 Оставлено : 25 января 2008 г. 18:17:33(UTC)
Ильшат Абшарипов

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

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

А не кажется ли вам, что если вопрос задается здесь на форуме, то ищется ответ сколько-нибудь развернутый, а не отсыл в гугл/мсдн/фак?

И потом, если вы гуру, то зачем скрываете свои знания? :)
Offline Юрий  
#6 Оставлено : 25 января 2008 г. 18:30:38(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Тогда задам вопрос я:
1) Вы посмотрели MSDN по этой функции?
2) Посмотрели примеры использования этой функции (там же в MSDN)?
3) Что-то попробывали?
4) Что не получилось?
С уважением,
Юрий Строжевский
Offline Ильшат Абшарипов  
#7 Оставлено : 25 января 2008 г. 18:46:11(UTC)
Ильшат Абшарипов

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

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

Вот это уже другой разговор :)

Я опишу задачу, ок?
Есть сертификат, есть экспортированная пара ключей. Мне надо установить этот сертификат и ключи в систему и связать их друг с другом.

Что у меня есть: сертификат в системе сохраняется, ключи в хранилище тоже попадают. Но привязать друг к другу не получается.
Код:

// получаю имя контейнера провайдера
CryptGetProvParam(hProv, PP_CONTAINER, PByte(Buf), BufSize, 0);
WideBuf1 := Buf;
provInfo.pwszContainerName := PWideChar(WideBuf1);

// получаю имя провайдера
CryptGetProvParam(hProv, PP_NAME, PByte(Buf), BufSize, 0)
WideBuf2 := Buf;
provInfo.pwszContainerName := PWideChar(WideBuf2);

// получаю тип провайдера 
CryptGetProvParam(hProv, PP_PROVTYPE, @DWordBuf, BufSize, 0)
provInfo.dwProvType := DWordBuf;

// заполняем 
provInfo.dwFlags := 0;
provInfo.cProvParam := 0;  
provInfo.rgProvParam := nil;
provInfo.dwKeySpec := AT_SIGNATURE;

// выставляем
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, 0, @provInfo)

// пробовал и это
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_HANDLE_PROP_ID, 0, @hProv)

// и это тоже пробовал
KeyContext.cbSize := SizeOf(CERT_KEY_CONTEXT);
KeyContext.hCryptProv := hProv;
KeyContext.dwKeySpec := AT_SIGNATURE;
CertSetCertificateContextProperty(pCert, CERT_KEY_CONTEXT_PROP_ID, 0, @KeyContext)


Код проглатывается без ошибок, однако сертификат не связывается к ключом. То, что ключ привязан к сертификату, проверяю, открывая сертфикат в mmc/certificates.
Offline Ильшат Абшарипов  
#8 Оставлено : 25 января 2008 г. 18:55:08(UTC)
Ильшат Абшарипов

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

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

Решил проблему таки.

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

И достаточно было следующего кода для привязки ключей и сертификата.
Код:
provInfo.pwszContainerName := nil;
provInfo.pwszProvName := nil;
provInfo.dwProvType := PROV_GOST_DH;
provInfo.dwFlags := 0;
provInfo.cProvParam := 0;  
provInfo.rgProvParam := nil;
provInfo.dwKeySpec := AT_SIGNATURE;
CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, 0, @provInfo)

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

Offline Юрий  
#9 Оставлено : 25 января 2008 г. 19:00:35(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Немного не понял: а "provInfo.pwszProvName" где?
Почему два раза "provInfo.pwszContainerName "?
С уважением,
Юрий Строжевский
Offline Юрий  
#10 Оставлено : 25 января 2008 г. 19:01:43(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Нет, сертификат сначала надо добавить в хранилище, а потом устанавливать связь с контейнером ключей.
С уважением,
Юрий Строжевский
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.