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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Schmopsel  
#1 Оставлено : 13 июня 2017 г. 13:44:24(UTC)
Schmopsel

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

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

Доброго ремени суток.

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

Код, который использую для загрузки сертификата в хранилище:


Функция, которая возвращает контекст (на данный момент сертификат ложится в папку с приложением и берется от туда):


В случае с сертификатами CER, функция CertCreateCertificateContext возвращает TRUE. При попытке добавить сертификат PFX ошибка: 2148085760 - OSS Certificate encode/decode error code base. Как я понял, это связано с тем, что PFX это PKCS12 и является контейнером, содержащим в себе приватный ключ и сертификат (он же публичный ключ), а поддерживаются только PKCS7 и X509.
Нашел функцию PFXImportCertStore, которая, казалось бы, для этого и предназначена, но не нашел ни одного примера, в том числе в MSDN. К тому же смущает тот факт, что во входных параметрах нет хранилища.
Подскажите, пожалуйста, способ добавления сертификата PFX для дальнейшей подписи им документов, желательно с конкретными функциями.
Offline Русев Андрей  
#2 Оставлено : 14 июня 2017 г. 9:34:11(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,271

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
С pfx / pkcs#12 можно работать только через PFXImportCertStore / PFXExportCertStore (см. https://msdn.microsoft.c...aa387314(v=vs.85).aspx). Мы недавно добавили поддержку этого интерфейса в наш API на *nix. Замечу, что на данный момент поддерживается только наш собственный формат pfx. В будущих релизах также будет поддержан формат ТК26.

После импорта надо переложить сертификаты из полученного хранилища в системное, контейнеры с закрытыми ключами будут созданы самой функцией импорта pfx.
Официальная техподдержка. Официальная база знаний.
Offline Schmopsel  
#3 Оставлено : 14 июня 2017 г. 10:38:25(UTC)
Schmopsel

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

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

Как тогда сейчас происходит процедура подписи документа, если можно добавлять только сертификаты *.cer? Они же содержат в себе только открытый ключ. Как-то отдельно привязать файл закрытого ключа?
Пробую подписывать функцией CryptSignMessage, возвращает, соответственно, ошибку, что у сертификата отсутствует приватный ключ.
Offline Русев Андрей  
#4 Оставлено : 16 июня 2017 г. 9:20:10(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,271

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 446 раз в 325 постах
Закрытые ключи в большинстве случаев создаются прямо на устройстве. Наша контрольная панель там позволяет сформировать и отправить запрос на сертификат (на MS CA, КриптоПро УЦ 1.5, КриптоПро УЦ 2.0), получить ответ и установить сертификат. Нужно только, чтобы УЦ был доступен по сети с устройства.

В соседней теме я рассказывал про варианты импорта закрытых ключей на iOS: http://www.cryptopro.ru/...;m=80581&find=unread
Официальная техподдержка. Официальная база знаний.
Offline Schmopsel  
#5 Оставлено : 19 июня 2017 г. 13:48:23(UTC)
Schmopsel

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

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

Я смотрел этот пример, но на функции CryptGetUserKey все падает, т.к. кейсет пустой. Пробовал работать с функцией CryptAcquireCertificatePrivateKey, но контекст получается взять только для сертификатов .cer. Т.о. получается, что либо я пытаюсь функцией CryptAcquireCertificatePrivateKey вытащить приватный ключ у сертификата .cer, у которого его нет, либо я беру сертификат с приватным ключем (p12 или pfx) и не могу взять у них контекст, т.к. КриптоПро с ними не работает. Как же мне взять приватный ключ, если я не могу импортировать сертификат с приватным ключом?
Offline Schmopsel  
#6 Оставлено : 20 июня 2017 г. 13:09:24(UTC)
Schmopsel

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

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

У нас ситуация такая, что пользователю предоставляется уже сгенерированные администратором отдельно ключ и сертификат, а ему, в свою очередь, нужно их использовать в приложении, то есть ничего генерировать на устройстве не нужно. Допустим, что эти файлы будут закидываться в приложение через iTunes files sharing, но как ключ добавить в хранилище приложения программно?
Offline sopov  
#7 Оставлено : 20 июля 2017 г. 14:55:27(UTC)
sopov

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

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

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 3 раз в 3 постах
Автор: olin Перейти к цитате
После импорта надо переложить сертификаты из полученного хранилища в системное, контейнеры с закрытыми ключами будут созданы самой функцией импорта pfx.

Можете подробнее рассказать как это сделать?

Offline r.tkachev  
#8 Оставлено : 27 марта 2018 г. 11:02:54(UTC)
r.tkachev

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

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

Сказал(а) «Спасибо»: 1 раз
можно пример переноса сертификатов из олученного хранилища в системное? какие функции для этого используются?
Offline r.tkachev  
#9 Оставлено : 28 марта 2018 г. 13:33:43(UTC)
r.tkachev

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

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

Сказал(а) «Спасибо»: 1 раз
при вызове функции PFXImportCertStore возникает ошибка...

cpcsp: 0x16dcaf000: :524 CPCAcquireContext (pszContainer=\\.\HDIMAGE\arvt07c8l5vrqtj9yb1qrstzayvw4wqv2u6vx19r, dwFlags=0x48). Result=1, Err=0x0. hProv=1459748875.
capi20: 0x16dcaf000: :166 CryptGetDefaultProviderA () Default provider for type 1 is not specified!
cpcsp: 0x16dcaf000: :723 CPCReleaseContext (hProv=1459748875, dwFlags=0x0). Result=1, Err=0x80090020

в config.ini нет провайдера 1

pfx файл экспортирован из консоли Крипто ПРО...

4.0.0.0.9842

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

Offline r.tkachev  
#10 Оставлено : 30 марта 2018 г. 13:15:00(UTC)
r.tkachev

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

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

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