Имя: Пароль:
1C
 
Доступ к хранилищу сертификатов ЭП из сеанса под IIS
0 littlekan
 
11.03.22
14:57
win2016 + 1С 8.3.20 + IIS
Имею веб-сервис опубликованный на IIS, необходимо работать с ЭП (Поиск сертификатов в хранилище и подписание файлов).

Через обработку все работает.

&НаКлиенте
Процедура ПодписатьФайл()
    ТипыСертификатов = Новый Массив;
    ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
        ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
    Список = ПолучитьСписокСертификатов(80, ТипыСертификатов, Истина);
    Сертификат = Список[0];
    МенеджерКриптографии = Новый МенеджерКриптографии("", "", 80);
    МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = "";      
    ПутьКФайлуШифрованный = ПутьКФайлу + ".sig";
    МенеджерКриптографии.Подписать(ПутьКФайлу, ПутьКФайлуШифрованный, Сертификат);
КонецПроцедуры

&НаСервере
Функция ПолучитьСписокСертификатов(ТипМенеджераКриптографии, МассивТипов, ПроверятьДатуОкончания)
    //Списоксертификатов
    СписокСертификатов = Новый Массив;
    МенеджерКриптографии = Новый МенеджерКриптографии("", "", ТипМенеджераКриптографии);
    Для Каждого ТипХранилища Из ТипыХранилищ Цикл
        //Получаемсертификатыдлякаждоготипахранилищасертификатов
        Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища);
        //Выбираем все сертификаты
        СертификатыХранилища = Хранилище.ПолучитьВсе();
        ТекущаяДата = ТекущаяДата();
        Для Каждого Сертификат Из СертификатыХранилища Цикл
            Если ПроверятьДатуОкончания И Сертификат.ДатаОкончания < ТекущаяДата Тогда
                //Пропускаем истекшие сертификаты, если нужно
                Продолжить;
            КонецЕсли;
            СписокСертификатов.Добавить(Сертификат);
        КонецЦикла;
    КонецЦикла;
    Возврат СписокСертификатов;
КонецФункции

а через веб-сервис опубликованной базы ничего не работает

Следующий код не пускает в хранилище:
Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища);

Ошибка при вызове метода контекста (ПолучитьХранилищеСертификатов): Ошибка при открытии хранилища сертификатов (0x00000005)

а здесь пусто:
ХранилищеСертификатов2 = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
Сертификат = ХранилищеСертификатов2.ПолучитьВсе();

Ребята, есть идеи?