Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Здравствуйте! Возникла такая проблема: - Сгенерировал тестовый сертификат на dss.cryptopro.ru - Записал его в локальное хранилище  Konsol'1 - [Koren' konsoli_Sertifikaty (lokal'nyjj .png (53kb) загружен 14 раз(а).И пытаюсь его найти следующим кодом: Код:HCERTSTORE hCertStore = CertOpenSystemStore(0, L"MY");
if (nullptr == hCertStore)
{
errCode = ::GetLastError();
return {};
}
PCCERT_CONTEXT pContext = nullptr;
std::vector<unsigned char> kpiBuffer;
DWORD kpiSize = 0;
const DWORD propId = CERT_KEY_PROV_INFO_PROP_ID;
while (true)
{
pContext = ::CertFindCertificateInStore(hCertStore, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
CERT_FIND_PROPERTY, &propId, pContext);
if (nullptr == pContext)
{
errCode = ::GetLastError();
break;
}
if (FALSE == ::CertGetCertificateContextProperty(pContext, CERT_KEY_PROV_INFO_PROP_ID, nullptr, &kpiSize))
{
errCode = ::GetLastError();
break;
}
kpiBuffer.resize(kpiSize);
PCRYPT_KEY_PROV_INFO pKeyProvInfo = reinterpret_cast<PCRYPT_KEY_PROV_INFO>(kpiBuffer.data());
if (FALSE == ::CertGetCertificateContextProperty(pContext, CERT_KEY_PROV_INFO_PROP_ID, pKeyProvInfo, &kpiSize))
{
errCode = ::GetLastError();
break;
}
if (AT_SIGNATURE == pKeyProvInfo->dwKeySpec && L"TestCerf" == GetString(CERT_NAME_FRIENDLY_DISPLAY_TYPE, pContext))
{
// ... Нашли сертификат
}
}
В итоге, программа никогда не попадает в условие с комментарием "Нашли сертификат". На каком этапе может быть ошибка?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 889  Сказал(а) «Спасибо»: 74 раз Поблагодарили: 191 раз в 186 постах
|
Добрый день. Ключ может быть не AT_SIGNATURE а AT_KEYEXCHANGE |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: Санчир Момолдаев  Добрый день. Ключ может быть не AT_SIGNATURE а AT_KEYEXCHANGE Добрый! Попробовал с AT_KEYEXCHANGE, все равно не находит. Вообще он через while проходит только один раз, т.е. находит только один ключ в секции "MY", и GetString(CERT_NAME_FRIENDLY_DISPLAY_TYPE, pContext) для него возвращает имя и фамилию текущего пользователя. Я теперь не уверен даже, точно ли этот "MY" смотрит в папку "Личное", в которую я поместил сертификат.
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 889  Сказал(а) «Спасибо»: 74 раз Поблагодарили: 191 раз в 186 постах
|
А вы примеры смотрели? Там есть пример поиска сертификата в хранилище и к примеру подпись |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Цитата:В итоге, программа никогда не попадает в условие с комментарием "Нашли сертификат". На каком этапе может быть ошибка?
HCERTSTORE hCertStore = CertOpenSystemStore(0, L"MY");https://docs.microsoft.c...ypt-certopensystemstoreaRemarks Only current user certificates are accessible using this method, not the local machine store. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Также вопрос - закрытый ключ на сервере DSS? Сертификат как установили? через КриптоПРО CSP или просто скачали и импортировали в локальное хранилище компьютера? |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей *  Также вопрос - закрытый ключ на сервере DSS? Сертификат как установили? через КриптоПРО CSP или просто скачали и импортировали в локальное хранилище компьютера? Второе, просто импортировал. По поводу CertOpenSystemStore, похоже, Вы правы, попробую сегодня-завтра импортировать в текущего пользователя и сообщу о результате
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Переимпортировал сертификат в правильное место, теперь он находится, если искать с параметром CERT_FIND_ANY вместо CERT_FIND_PROPERTY. Как сделать, чтобы в ключе был параметр CERT_KEY_PROV_INFO_PROP_ID? Этот ключ я получил из dss.cryptopro.ru, сделал запрос на сертификат с такими параметрами:  Server ehlektronnojj podpisi KriptoPro DSS - Sozdani.png (67kb) загружен 5 раз(а).Затем ввел пинкод и загрузил.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Автор: ProstoDen  Переимпортировал сертификат в правильное место, теперь он находится, если искать с параметром CERT_FIND_ANY вместо CERT_FIND_PROPERTY. Как сделать, чтобы в ключе был параметр CERT_KEY_PROV_INFO_PROP_ID? Этот ключ я получил из dss.cryptopro.ru, сделал запрос на сертификат с такими параметрами:  Server ehlektronnojj podpisi KriptoPro DSS - Sozdani.png (67kb) загружен 5 раз(а).Затем ввел пинкод и загрузил. Установить сертификат с привязкой к облачному контейнеру? |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Всем спасибо, в итоге получилось сгенерировать сертификат с помощью http://www.cryptopro.ru/certsrv/certrqma.asp.Но теперь другой вопрос: Я захотел повторно сгенерировать ключ с теми же параметрами, но в ответ пишет, что имя контейнера уже существует. Где вообще можно просмотреть список этих контейнеров и, по возможности, удалить?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: ProstoDen  Всем спасибо, в итоге получилось сгенерировать сертификат с помощью http://www.cryptopro.ru/certsrv/certrqma.asp.Но теперь другой вопрос: Я захотел повторно сгенерировать ключ с теми же параметрами, но в ответ пишет, что имя контейнера уже существует. Где вообще можно просмотреть список этих контейнеров и, по возможности, удалить? А, все, разобрался Нужно запустить cmd от имени администратора и выполнить certutil -user -delkey <имя контейнера>
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Еще один вопрос: Теперь пытаюсь сгенерировать с помощью Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider, также указываю имя контейнера, но теперь нигде не могу найти этот контейнер. cerfutil показывает такую информацию:  Administrator_ Komandnaja stroka 2021-03-05 16.36.3.png (36kb) загружен 3 раз(а).Где и как этот контейнер удалить?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Панель управления\КриптоПРО CSP\Сервис
Есть тестирование, есть удаление.
И зачем 2001 вообще использовать?
В отчёте же написано где - реестр.
|
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Удалять, потому что новый не получается с таким же именем? Может нужно при генерации - использовать уникальное имя? |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей *  Панель управления\КриптоПРО CSP\Сервис И зачем 2001 вообще использовать?
Там на странице только такой есть
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей *  Панель управления\КриптоПРО CSP\Сервис
Спасибо, сработало
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Автор: ProstoDen  Автор: Андрей *  Панель управления\КриптоПРО CSP\Сервис И зачем 2001 вообще использовать?
Там на странице только такой есть А версия КриптоПРО CSP какая? Если список раскрыть - нет 2012?  Snimok ehkrana ot 2021-03-05 22-43-49.png (112kb) загружен 5 раз(а). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
Автор: Андрей *  Автор: ProstoDen  Автор: Андрей *  Панель управления\КриптоПРО CSP\Сервис И зачем 2001 вообще использовать?
Там на странице только такой есть А версия КриптоПРО CSP какая? Если список раскрыть - нет 2012?  Snimok ehkrana ot 2021-03-05 22-43-49.png (112kb) загружен 5 раз(а). Там только такие варианты есть  Bezymjannyjj - Paint 2021-03-15 11.23.42.png (30kb) загружен 3 раз(а).Версия ядра СКЗИ: 3.9.8010 КС1 Версия продукта: 3.9.8495
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 11,142   Сказал «Спасибо»: 425 раз Поблагодарили: 1718 раз в 1324 постах
|
Автор: ProstoDen  Версия ядра СКЗИ: 3.9.8010 КС1 Версия продукта: 3.9.8495 И зачем в 2021 использовать 3.9? 2012 есть начиная с 4 версии. Переходите на актуальную, 5 версию. |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 02.03.2021(UTC) Сообщений: 12
Сказал(а) «Спасибо»: 9 раз
|
А помогите, пожалуйста, разъяснить еще один момент. Допустим, у клиента есть мой файл + отделенная подпись, и он хочет проверить соответствие таким образом: cryptcp -verify testImg.png -detached -f testImg.png.sgn Я правильно понимаю, что здесь берется сертификат, который хранится в самом testImg.png.sgn файле и не идет обращения к хранилищу юзера? И если да, то что в таком случае может помешать кому-то подделать сам файл, сгенерировав для него собственную подпись?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close