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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Казакова  
#1 Оставлено : 9 декабря 2009 г. 21:56:41(UTC)
Казакова

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

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

Добрый день. Вопрос такой. Используется функция
WINCRYPT32API
BOOL
WINAPI
CertGetCertificateContextProperty(
__in PCCERT_CONTEXT pCertContext,
__in DWORD dwPropId,
__out_bcount_part_opt(*pcbData, *pcbData) void *pvData,
__inout DWORD *pcbData
);
Случай 1.
Если ей передается на вход сертификат, установленный с сайта cryptopro, у которого удален ключевой контейнер, функция возвращает true.
Случай 2.
Если ей передается на вход сертификат, загруженный из файла (ранее был выгружен в Der-кодировке из сертификата, установленного с сайта cryptopro на другом компьютере). То функция возвращает false.

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

Собственно вопросы:
1. Как влияет свойство "Есть закрытый ключ, соответствующий этому сертификату" на работу функции?
2.Почему при удалении контейнера с закрытыми ключами, свойство сохраняется?
3.Как правильно выгружать сертификат, установленного на сервере контейнера, чтобы добиться работы функции на клиентской машине после установки выгруженного сертификата?
Offline Василий Дементьев  
#2 Оставлено : 9 декабря 2009 г. 22:28:17(UTC)
Василий Дементьев

Статус: Администратор

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

Поблагодарили: 6 раз в 5 постах
Уточнение.

А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)?
Offline Kirill Sobolev  
#3 Оставлено : 9 декабря 2009 г. 23:36:18(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Если речь идет о CERT_KEY_PROV_INFO_PROP_ID, судя по вопросам, то
1. Она возвращает TRUE, соответственно заполняя структуру CRYPT_KEY_PROV_INFO.
2. Представьте, например, ситуацию со съемным носителем.
3. Вопрос не очень понятен - Вы хотите связать сертификат на клиенте с контейнером на сервере?
Техническую поддержку оказываем тут
Наша база знаний
Offline Казакова  
#4 Оставлено : 10 декабря 2009 г. 13:17:27(UTC)
Казакова

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

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

Василий Дементьев написал:
Уточнение.

А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)?


dwPropId = CERT_KEY_PROV_INFO_PROP_ID
Offline Игорь М.  
#5 Оставлено : 10 декабря 2009 г. 15:00:14(UTC)
Игорь М.

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

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

Василий Дементьев написал:
Уточнение.

А какое именно свойство Вы хотите получить (т.е. чему равно значение dwPropId)?


Некоторое уточнение.
Нам необходимо убедиться, что сертификат предполагает использование ГОСТ-алгоритмов

if(!(CertGetCertificateContextProperty(
pCertContext,
CERT_KEY_PROV_INFO_PROP_ID,
pKeyInfo,
&dwSize)))
{
SetErrorMessage(L"Невозможно выделить память под структуру, содержащую информацию о ключе при вторичном вызове функции.(Код ошибки - 81009)");
SetErrorCode(81009);
goto done;
}

//-------------------------------------------
// Проверка члена dwKeySpec на расширенный ключ и типа провайдера
if(!(pKeyInfo->dwKeySpec == AT_KEYEXCHANGE && pKeyInfo->dwProvType == PROV_GOST_2001_DH))
{
SetErrorMessage(L"Ключ, связанный с указанным сертификатом, не является ключём для шифрования, либо не поддерживает ГОСТ.(Код ошибки - 81011)");
SetErrorCode(81011);
goto done;
}
Offline Игорь М.  
#6 Оставлено : 10 декабря 2009 г. 15:01:03(UTC)
Игорь М.

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

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

Отредактировано пользователем 10 декабря 2009 г. 15:05:47(UTC)  | Причина: Не указана

Offline Василий Дементьев  
#7 Оставлено : 10 декабря 2009 г. 15:47:39(UTC)
Василий Дементьев

Статус: Администратор

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

Поблагодарили: 6 раз в 5 постах
Для поставленной задачи вообще не нужно вызывать эту функцию.

Алгоритм открытого ключа сертификата имеется в структуре pCertContext.

pCertContext->pCertInfo.SubjectPublicKeyInfo.Algorithm

Это поле типа CRYPT_ALGORITHM_IDENTIFIER, в котором есть строка - идентификатор алгоритма.

Для алгоритмов ГОСТ и сертификатов КриптоПро CSP значение идентификатора алгоритма начинается с 1.2.643.2.2

Отредактировано пользователем 10 декабря 2009 г. 15:48:16(UTC)  | Причина: Не указана

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