Ошибка при открытии хранилища сертификатов (0x00000057)
Добрый день. Пытаюсь получить сертификаты ЭЦП, и вылезает ошибка Ошибка при вызове метода контекста (ПолучитьХранилищеСертификатов)
{ВнешняяОбработка.ПолучениеСертификатов.Форма.Форма.Форма(24)}:ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
по причине:
Ошибка при открытии хранилища сертификатов (0x00000057). ТипХранилищаСертификатовКриптографии пробовал все 4 вида передавать в ПолучитьХранилищеСертификатов, ошибка везде эта. Подскажите, пожалуйста, как получить сертификаты? Мне нужно подписать строку, полученную c markirovka.ru.
{ВнешняяОбработка.ПолучениеСертификатов.Форма.Форма.Форма(24)}:ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
по причине:
Ошибка при открытии хранилища сертификатов (0x00000057).
МенеджерКриптографии = Новый МенеджерКриптографии;
ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
СертификатыХранилища = ХранилищеСертификатов.ПолучитьВсе();
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Команда
создает неинициализированный менеджер криптографии. Попробуйте создать менеджер криптографии с инициализацией модуля криптографии (используйте параметры в конструкторе) или выполнить метод Инициализировать().
МенеджерКриптографии = Новый МенеджерКриптографии;
создает неинициализированный менеджер криптографии. Попробуйте создать менеджер криптографии с инициализацией модуля криптографии (используйте параметры в конструкторе) или выполнить метод Инициализировать().
(2) Спасибо, передал параметры в конструктор, только теперь не могу разобраться, почему личные сертификаты там не видно. Пробовал по серийным номерам их найти, не находит. Подскажите, пожалуйста, в чем может быть причина?
ОписаниеМенеджераКриптографии = ДиагностикаЭДОКлиентСервер.ОписаниеМенеджераКриптографииWindows();
МенеджерКриптографии = Новый МенеджерКриптографии(ОписаниеМенеджераКриптографии.ИмяПрограммы,
ОписаниеМенеджераКриптографии.ПутьКПрограмме, ОписаниеМенеджераКриптографии.ТипПрограммы);
МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", "", 75);
ТипыХранилищ = Новый Массив;
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.КорневыеСертификаты);
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыУдостоверяющихЦентров);
Для Каждого ТипХранилища Из ТипыХранилищ Цикл
п_ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища);
СертификатыХранилища = п_ХранилищеСертификатов.ПолучитьВсе();
КонецЦикла;
Показать
(3) А теперь попробуйте задать второй параметр метода МенеджерКриптографии.ПолучитьХранилищеСертификатов(<ТипХранилища>, <РасположениеХранилища>)
По умолчанию там выбирается значение ДанныеПользователяОС (OSUserData) - может быть, Ваши сертификаты лежат в другом хранилище?
По умолчанию там выбирается значение ДанныеПользователяОС (OSUserData) - может быть, Ваши сертификаты лежат в другом хранилище?
(4) , пробовал комбинировать с первым параметром, тоже все типы хранилища передавал. Нужного сертификата ни в одном из вариантов не нашел. Искал и по отпечатку, и по дате окончания сертификата. в этой процедуре модуля ЭлектроннаяПодписьСлужебныйКлиент нужные сертификаты получаются, но она на клиенте выполняется. Я пытаюсь получить на сервере. В типовой ут не могу найти, где можно посмотреть, как получать сертификат на сервере. Думал в справочник его добавить, но из справочника тоже получить не могу. Возвращает неопределено.
МенеджерКриптографии.ПолучитьХранилищеСертификатов(, )
перепробовал указывать второй параметр все расположения РасположениеХранилищаСертификатовКриптографии.ДанныеКомпьютера;
РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС;
РасположениеХранилищаСертификатовКриптографии.ДанныеПриложения;
// Продолжение процедуры ПолучитьСвойстваСертификатовНаКлиенте.
Процедура ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияВсехПерсо нальныхСертификатов(Массив, Контекст) Экспорт
Контекст.Вставить("МассивСертификатов", Массив);
Если Контекст.Личные Тогда
ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияВсех(Контекст);
Возврат;
КонецЕсли;
Контекст.МенеджерКриптографии.НачатьПолучениеХранилищаСертификатов(
Новый ОписаниеОповещения(
"ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияХранилищ аПолучателей", ЭтотОбъект, Контекст),
ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
КонецПроцедуры
ПоказатьВыборкаПрограммыЭЦП = Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Выбрать();
Пока ВыборкаПрограммыЭЦП.Следующий() Цикл
СертификатЭЦП = ЭлектроннаяПодписьСлужебный.СертификатИзДвоичныхДанных(ВыборкаПрограммыЭЦП.ДанныеСертификата.Получить());
(5)
Про это тоже надо было сообщить в Вашем вопросе. С помощью оснастки "Сертификаты" консоли mmc просмотрите хранилища сертификатов Windows на своем сервере - в хранилище локального компьютера и пользователя, от имени которого запущена 1С (Агент сервера 1С:Предприятие). Если там чего-то не хватает - попробуйте добавить 8-).
Работа с сертификатами и закрытыми ключами, расположенными в хранилищах на клиенте, на сервере невозможна.
Я пытаюсь получить на сервере.
Про это тоже надо было сообщить в Вашем вопросе. С помощью оснастки "Сертификаты" консоли mmc просмотрите хранилища сертификатов Windows на своем сервере - в хранилище локального компьютера и пользователя, от имени которого запущена 1С (Агент сервера 1С:Предприятие). Если там чего-то не хватает - попробуйте добавить 8-).
Работа с сертификатами и закрытыми ключами, расположенными в хранилищах на клиенте, на сервере невозможна.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот