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

Уведомление

Icon
Error

7 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline akulema  
#1 Оставлено : 17 октября 2008 г. 20:32:55(UTC)
akulema

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

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

День добрый, разбираясь с ЭЦП, решил программно создать сертификат (CryptoAPI C++) и столкнулся с трудностями:

1) Не смог найти место куда необходимо записывать атрибуты сертификата (такие как период действия, открытый ключ и т.п.)
2) Как результат 1ого вопроса, создал сертификат только с данными о пользователе. Сохранил в файл, все функции CryptoAPI отработали нормально, однако, при попытке открыть такой сертификат, появляется окно с предупреждением ("Этот файл не может использоваться как: Сертификат безопасности") и открытие не происходит. Может это следствие отсутствия каких то обязательных полей, а может я просто что то упустил.

Буду благодарен за любую помощь. Спасибо.
Offline Kirill Sobolev  
#2 Оставлено : 17 октября 2008 г. 21:13:42(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
посмотрите makecert.c из http://www.cryptopro.ru/...ts/csp/20/sample-2-0.zip
Техническую поддержку оказываем тут
Наша база знаний
Offline akulema  
#3 Оставлено : 18 октября 2008 г. 0:53:24(UTC)
akulema

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

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

Ух ты. Благодарствую. А можно нескромный вопрос? Можно ли использовать это в коммерческой разработке?
Offline Максим Коллегин  
#4 Оставлено : 18 октября 2008 г. 4:10:22(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
Боюсь, что в коммерческой разработке это мало поможет ;)
Примеры для того и сделаны были - помочь научиться использовать CryptoAPI.
Знания в базе знаний, поддержка в центре поддержки
Offline akulema  
#5 Оставлено : 18 октября 2008 г. 12:59:51(UTC)
akulema

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

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

Спасибо большое. Буду разбираться.
Offline akulema  
#6 Оставлено : 20 октября 2008 г. 21:12:50(UTC)
akulema

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

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

Еще раз день добрый. Увы, но результат я получил точно такой же: "Этот файл не может использоваться как: Сертификат безопасности". Может что то необходимо настроить в самой системе?
Offline Kirill Sobolev  
#7 Оставлено : 20 октября 2008 г. 21:18:32(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
вряд ли.
выложите этот сертификат сюда в base64
Техническую поддержку оказываем тут
Наша база знаний
Offline akulema  
#8 Оставлено : 20 октября 2008 г. 21:44:03(UTC)
akulema

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

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

Кое-что у меня получилось, но хотелось бы уточнить почему так. В функции создания сертификата (в примере, который Вы мне показали) есть блок экспорта сертификата в файл
Код:

if (bExport)
		{
			DWORD dwWritten;

			/* Create Certificate file*/
			...

			/* Write encoded Certificate to file*/
                        ...

			/* Destroy previous hash*/
			...

			/* Create hash*/
			...

			/* Hash password*/
			...

			/* Derive Session Key from hash*/
			...

			/* Get size of exported key blob*/
			...

			/* Allocate memory for exported key blob*/
			...

			/* Get exported key blob*/
			...

			/* Create Exported Key File*/
			...

			...


Так вот все это я заменил на
Код:

                LPTSTR szSignedEncodedCertBlob = new char[dwSize];
		ByteToStr(dwSize, bpEncodedCert, szSignedEncodedCertBlob);	
		WriteToFile("C:\\БезШифра.cer", szSignedEncodedCertBlob, iBlobLen);	
		WriteToFile("C:\\Зашифрованный.cer", bpEncodedCert, num);


И тогда сертификат создаётся и открывается. Собственно вопрос в том, что делает блок программы из примера. Для чего хэш и почему создаётся 2 файла? Ну если не трудно конечно.
Offline akulema  
#9 Оставлено : 20 октября 2008 г. 22:01:58(UTC)
akulema

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

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

И еще не совсем понимаю. Ведь сертификат создаётся для того, чтобы подтвердить открытый ключ. Открытый ключ создаётся в паре с закрытым. В функции есть строчки
Код:

/* Generate Private/Public key pair*/
bResult = CryptGenKey(hCryptProv, dwKeyType, CRYPT_EXPORTABLE, &hPubKey);

Если после этого нужно создать контейнер, то где тут закрытый ключ? Если это вообче создание пары =)) Я то раньше думал, что цепочка примерно такая:
1. Создаем пару
2. Создаем контейнер
3. Создаем сертификат, передав в функцию открытый ключ из пары

Разве не так?
Offline Kirill Sobolev  
#10 Оставлено : 21 октября 2008 г. 14:03:24(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Собственно вопрос в том, что делает блок программы из примера. Для чего хэш и почему создаётся 2 файла?

это экспорт секретного ключа в файл - КриптоПро CSP не поддерживается.
Цитата:
1. Создаем пару
2. Создаем контейнер
3. Создаем сертификат, передав в функцию открытый ключ из пары

Сначала создается контейнер
Код:
bResult = CryptAcquireContext(&hProv,
                        szContainer,
                        szProvider,
                        dwProviderType,
                        CRYPT_NEWKEYSET | dwAcquireFlags);

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