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

Уведомление

Icon
Error

6 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline andreyxvo  
#1 Оставлено : 11 марта 2012 г. 12:30:18(UTC)
andreyxvo

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

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

Здравствуйте!

У меня очередной не очень умный вопрос. Подскажите пожалуйста!

Есть некая цепочка сертификатов, которые лежат в файлах. Как для создания ЭЦП загрузить всю цепочку сертификатов?

Большое спасибо.
Offline Андрей Писарев  
#2 Оставлено : 11 марта 2012 г. 12:36:21(UTC)
Андрей *

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

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

Сказал «Спасибо»: 581 раз
Поблагодарили: 2308 раз в 1807 постах
andreyxvo написал:
Здравствуйте!

У меня очередной не очень умный вопрос. Подскажите пожалуйста!

Есть некая цепочка сертификатов, которые лежат в файлах. Как для создания ЭЦП загрузить всю цепочку сертификатов?

Большое спасибо.



Цитата:
Есть некая цепочка сертификатов, которые лежат в файлах

в каком формате, pkcs7?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 11 марта 2012 г. 12:48:27(UTC)
Андрей *

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

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

Сказал «Спасибо»: 581 раз
Поблагодарили: 2308 раз в 1807 постах
например, так:
из файла p7b (или с ЭЦП) с несколькими сертификатами:

CryptQueryObject( CERT_QUERY_OBJECT_FILE,
File_p7b ,
CERT_QUERY_CONTENT_FLAG_ALL,
CERT_QUERY_FORMAT_FLAG_ALL, ... )
CryptMsgGetParam(hMsg, CMSG_CERT_COUNT_PARAM..
выделяем память...
CryptMsgGetParam(hMsg, CMSG_CERT_COUNT_PARAM...pdwCount ..)

pdwCount- кол-во сертификатов

достаем I-сертификат
CryptMsgGetParam(hMsg, CMSG_CERT_PARAM, I, nil, dwSize)
выделяем память pbData
CryptMsgGetParam(hMsg, CMSG_CERT_PARAM, I, pbData, dwSize)

контекст сертификата
pCertContext:= CertCreateCertificateContext(MY_ENCODING_TYPE ... память, размер)
что-то еще делаем...
..
(анализируем, добавляем в массив сертификатов для ЭЦП ... )

Отредактировано пользователем 11 марта 2012 г. 12:59:24(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline andreyxvo  
#4 Оставлено : 11 марта 2012 г. 13:20:25(UTC)
andreyxvo

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

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

"в каком формате, pkcs7?"
Да, pkcs7.

Если я правильно понял, представленный пример берет цепочку сертификатов из готовой подписи.

У меня задачка создать подпись, на основе пользовательского сертификата ".cer", который лежит в некой папке. Рядом с ним есть прочие сертификаты вплоть до корневого.
Вопрос собственно в том как выстроить всю эту цепочку?
Offline Андрей Писарев  
#5 Оставлено : 11 марта 2012 г. 13:28:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 581 раз
Поблагодарили: 2308 раз в 1807 постах
Цитата:
пример берет цепочку сертификатов из готовой подписи.

да или из p7b

andreyxvo написал:
"в каком формате, pkcs7?"
Да, pkcs7.

Если я правильно понял, представленный пример берет цепочку сертификатов из готовой подписи.

У меня задачка создать подпись, на основе пользовательского сертификата ".cer", который лежит в некой папке. Рядом с ним есть прочие сертификаты вплоть до корневого.
Вопрос собственно в том как выстроить всю эту цепочку?



тогда загружай каждый сертификат в массив, анализируй сертификаты по:
"идентификатор ключа субъекта" и "идентификатор ключа ЦС"

можно и по владельцу\кто выдал ... конечно

Цитата:
Вопрос собственно в том как выстроить всю эту цепочку?

так бы сразу и спросил Anxious

Отредактировано пользователем 11 марта 2012 г. 13:38:51(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline andreyxvo  
#6 Оставлено : 11 марта 2012 г. 13:34:22(UTC)
andreyxvo

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

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

Спасибо. Буду пробовать.
Offline Андрей Писарев  
#7 Оставлено : 11 марта 2012 г. 13:36:30(UTC)
Андрей *

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

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

Сказал «Спасибо»: 581 раз
Поблагодарили: 2308 раз в 1807 постах
например:
1.cer
ИД ключа владельца: 952284E2162164BD9C7C7C033243420E1E09F3F6
ИД ключа ЦС: ECBB214BBE2666AD35C581D1844AD3FCD9817A33

2.cer
ИД ключа владельца: 9C7C7C033243420E1E09F3F6952284E2162164BD
ИД ключа ЦС: 9C7C7C033243420E1E09F3F6952284E2162164BD


3.cer
ИД ключа владельца: ECBB214BBE2666AD35C581D1844AD3FCD9817A33
ИД ключа ЦС: 9C7C7C033243420E1E09F3F6952284E2162164BD

Цепочка:
root: 2.cer
ЦС: 3.cer
пользователь: 1.cer

Отредактировано пользователем 11 марта 2012 г. 13:37:41(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline andreyxvo  
#8 Оставлено : 11 марта 2012 г. 17:40:48(UTC)
andreyxvo

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

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

Для упрощения задачи, для начала, решил что знаю имена файлов сертификатов (.cer), от пользовательского до корневого и их порядок в цепочке.

При создании подписи я создаю контекст серификата следующими функциями:
hStore = CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла");
CertFindCertificateInStore(hStore,.....);

Если правильно понимаю, так я создаю контекст пользовательского сертификата (последнего в цепочке).

Но ни как не пойму в какой момент и как мне подгрузить остальные сертификаты из цепочки.

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

Создаю для каждого сертификата контекст вышеуказанным способом,
и добавляю сертификат в готовую подпись:
CryptMsgControl(... CMSG_CTRL_ADD_CERT,...)
Offline Андрей Писарев  
#9 Оставлено : 11 марта 2012 г. 17:44:59(UTC)
Андрей *

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

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

Сказал «Спасибо»: 581 раз
Поблагодарили: 2308 раз в 1807 постах
andreyxvo написал:
Для упрощения задачи, для начала, решил что знаю имена файлов сертификатов (.cer), от пользовательского до корневого и их порядок в цепочке.

При создании подписи я создаю контекст серификата следующими функциями:
hStore = CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла");
CertFindCertificateInStore(hStore,.....);

Если правильно понимаю, так я создаю контекст пользовательского сертификата (последнего в цепочке).

Но ни как не пойму в какой момент и как мне подгрузить остальные сертификаты из цепочки.

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

Создаю для каждого сертификата контекст вышеуказанным способом,
и добавляю сертификат в готовую подпись:
CryptMsgControl(... CMSG_CTRL_ADD_CERT,...)


порядок следования в массиве - не важен, важны верные сертификаты (которые нужно вложить) - как их собрать по цепочке - я предложил

что мешает использовать:
SignedMsgEncodeInfo.cCertEncoded - кол-во сертификатов
SignedMsgEncodeInfo.rgCertEncoded := @SignerCertBlobArray ( сертификаты ) ?

можно и так CryptMsgControl(... CMSG_CTRL_ADD_CERT,...)

Отредактировано пользователем 11 марта 2012 г. 17:48:12(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline andreyxvo  
#10 Оставлено : 11 марта 2012 г. 17:52:28(UTC)
andreyxvo

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

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

Мешает не уверенное знание материала.

Глупый вопрос, если я SignerCertBlobArray засуну все сертификаты, то все будет правильно работать?

И еще один глупый вопрос....
Если я сертификат экспортирую в p7b, то полученный файл будет содержать всю цепочку сертификатов.
Открыв его ф-ей CertOpenStore(CERT_STORE_PROV_FILENAME..."Имя файла"). Создав подпись я получу подпись со вложенной цепочкой сертификатов?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
6 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.