Ошибка при открытии хранилища сертификатов (0x00000057)

1. user1619761 29.04.25 20:38 Сейчас в теме
Добрый день. Пытаюсь получить сертификаты ЭЦП, и вылезает ошибка Ошибка при вызове метода контекста (ПолучитьХранилищеСертификатов)
{ВнешняяОбработка.ПолучениеСертификатов.Форма.Форма.Форма(24)}:ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов();

по причине:
Ошибка при открытии хранилища сертификатов (0x00000057).
МенеджерКриптографии = Новый МенеджерКриптографии;
	ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
	СертификатыХранилища = ХранилищеСертификатов.ПолучитьВсе();
ТипХранилищаСертификатовКриптографии пробовал все 4 вида передавать в ПолучитьХранилищеСертификатов, ошибка везде эта. Подскажите, пожалуйста, как получить сертификаты? Мне нужно подписать строку, полученную c markirovka.ru.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. gml 30.04.25 10:52 Сейчас в теме
(1) Команда
МенеджерКриптографии = Новый МенеджерКриптографии;

создает неинициализированный менеджер криптографии. Попробуйте создать менеджер криптографии с инициализацией модуля криптографии (используйте параметры в конструкторе) или выполнить метод Инициализировать().
user1619761; +1 Ответить
3. user1619761 04.05.25 19:09 Сейчас в теме
(2) Спасибо, передал параметры в конструктор, только теперь не могу разобраться, почему личные сертификаты там не видно. Пробовал по серийным номерам их найти, не находит. Подскажите, пожалуйста, в чем может быть причина?
	ОписаниеМенеджераКриптографии = ДиагностикаЭДОКлиентСервер.ОписаниеМенеджераКриптографииWindows();
	МенеджерКриптографии = Новый МенеджерКриптографии(ОписаниеМенеджераКриптографии.ИмяПрограммы,
	ОписаниеМенеджераКриптографии.ПутьКПрограмме, ОписаниеМенеджераКриптографии.ТипПрограммы);
	МенеджерКриптографии = Новый МенеджерКриптографии("Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider", "", 75); 
	ТипыХранилищ = Новый Массив;
	ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.КорневыеСертификаты);
	ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
	ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
	ТипыХранилищ.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыУдостоверяющихЦентров);
	Для Каждого ТипХранилища Из ТипыХранилищ Цикл
		п_ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища); 	
		СертификатыХранилища = п_ХранилищеСертификатов.ПолучитьВсе();                      
	КонецЦикла;
Показать
4. gml 06.05.25 18:41 Сейчас в теме
(3) А теперь попробуйте задать второй параметр метода МенеджерКриптографии.ПолучитьХранилищеСертификатов(<ТипХранилища>, <РасположениеХранилища>)

По умолчанию там выбирается значение ДанныеПользователяОС (OSUserData) - может быть, Ваши сертификаты лежат в другом хранилище?
user1619761; +1 Ответить
5. user1619761 13.05.25 21:41 Сейчас в теме
(4)
МенеджерКриптографии.ПолучитьХранилищеСертификатов(, )
перепробовал указывать второй параметр все расположения
РасположениеХранилищаСертификатовКриптографии.ДанныеКомпьютера;
		РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС;
		РасположениеХранилищаСертификатовКриптографии.ДанныеПриложения;
, пробовал комбинировать с первым параметром, тоже все типы хранилища передавал. Нужного сертификата ни в одном из вариантов не нашел. Искал и по отпечатку, и по дате окончания сертификата.
// Продолжение процедуры ПолучитьСвойстваСертификатовНаКлиенте.
Процедура ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияВсехПерсо­нальныхСертификатов(Массив, Контекст) Экспорт
	
	Контекст.Вставить("МассивСертификатов", Массив);
	
	Если Контекст.Личные Тогда
		ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияВсех(Контекст);
		Возврат;
	КонецЕсли;
	
	Контекст.МенеджерКриптографии.НачатьПолучениеХранилищаСертификатов(
		Новый ОписаниеОповещения(
			"ПолучитьСвойстваСертификатовНаКлиентеПослеПолученияХранилищ­аПолучателей", ЭтотОбъект, Контекст),
		ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
	
КонецПроцедуры
Показать
в этой процедуре модуля ЭлектроннаяПодписьСлужебныйКлиент нужные сертификаты получаются, но она на клиенте выполняется. Я пытаюсь получить на сервере. В типовой ут не могу найти, где можно посмотреть, как получать сертификат на сервере. Думал в справочник его добавить, но из справочника тоже получить не могу. Возвращает неопределено.
ВыборкаПрограммыЭЦП = Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования.Выбрать();
	
	Пока ВыборкаПрограммыЭЦП.Следующий() Цикл
		
		СертификатЭЦП = ЭлектроннаяПодписьСлужебный.СертификатИзДвоичныхДанных(ВыборкаПрограммыЭЦП.ДанныеСертификата.Получить());
6. gml 13.05.25 22:10 Сейчас в теме
(5)
Я пытаюсь получить на сервере.


Про это тоже надо было сообщить в Вашем вопросе. С помощью оснастки "Сертификаты" консоли mmc просмотрите хранилища сертификатов Windows на своем сервере - в хранилище локального компьютера и пользователя, от имени которого запущена 1С (Агент сервера 1С:Предприятие). Если там чего-то не хватает - попробуйте добавить 8-).

Работа с сертификатами и закрытыми ключами, расположенными в хранилищах на клиенте, на сервере невозможна.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот