Открываем доступ пользователю к хранилищу сертификатов локального компьютера
В данной статье рассматривается решение проблемы доступа к хранилищу сертификатов на операционных системах семейства Windows!
В библиотеке стандартных подсистем (БСП), начиная с версии 2.3, реализован мощный программный интерфейс для работы с криптографическими операциями. Выполнение криптографических операций требует обращение к хранилищу сертификатов, где хранится информация о сертификатах, установленных на компьютере. В момент программного обращения к хранилищу сертификатов, с целью получения информации о сертификате, может возникнуть ошибка доступа. Данная ошибка возникает по причине отсутствия необходимых прав у пользователя ОС к хранилищу сертификатов.
ОС Windows сертификаты хранит в двух основных хранилищах, которые подразделяются на вложенные хранилища. Основные хранилища:
- Хранилище локального компьютера — содержит сертификаты, доступ к которым осуществляется выполняющимися на компьютере процессами;
- Хранилище текущего пользователя — интерактивные приложения обычно помещают сертификаты в это хранилище для текущего пользователя компьютера.
На практике, у разработчика на платформе 1С, ошибка доступа к хранилищу сертификатов может возникнуть в случае, когда выполняются следующие условия:
- Используется клиент-серверный вариант работы;
- Криптографическая операция выполняется на сервере;
- Сертификат электронной подписи (ЭП) установлен в хранилище локального компьютера (см. рисунок 1);
Рисунок 1. Локальное хранилище сертификатов |
Текст ошибки будет звучать как-то так:
Ошибка доступа к хранилищу сертификатов (0x00000005)
Рассмотрим решение проблемы для вышеописанного случая. Что бы исправить ошибку, первым делом, необходимо выяснить, от имени какого пользователя ОС выполняется программное обращение к хранилищу сертификатов. Так как криптографическая операция выполняется на сервере, то это пользователь, от имени которого работает служба агента сервера 1С:Предприятия (обычно это локальный пользователь USR1CV8). Запускаем оснастку «Редактор реестра» (командная строка —> regedit.exe). В реестре содержится два узла, отвечающих за каждое основное хранилище:
- HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates (Сертификаты — текущий пользователь)
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates (Сертификаты (локальный компьютер))
Вызываем контекстное меню для узла, отвечающего за хранилище локального компьютера и открываем его разрешения (см. рисунок 2). На вкладке безопасность добавляем пользователя сервера 1С и даем ему полный доступ.
Рисунок 2. Разрешения локального хранилища сертификатов |
Плюсы использования криптографических операций на стороне сервера:
- хранение сертификатов пользователей в одном месте;
- хранение корневых сертификатов (сертификаты удостоверяющего центра) (см. рисунок 3) в одном месте, что позволяет избежать ошибки: цепочка сертификатов обработана, но прервана на корневом сертификате, который не является доверенным (см. рисунок 4);
- достаточно установить криптопровайдер (КриптоПро, VipNet) только на сервере (экономия денег на клиентских лицензиях при большом количестве клиентских мест).
Рисунок 3. Путь сертификации |
Рисунок 4. Ошибка проверки электронной подписи |
На самом деле, не обязательно хранить сертификаты в локальном хранилище компьютера, можно запустить сеанс работы с сервером от имени пользователя, под которым работает агент сервера 1С и устанавливать сертификаты в хранилище текущего пользователя. Такое хранение сертификатов предусмотрено во всех типовых решениях фирмы 1С.
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.9
»
Ошибка при обращении к хранилищу сертификатов
Василий Деревлев |
|
Статус: Новичок Группы: Участники
|
Не удалось открыть хранилище сертификатов Отказано в доступе. (00000005) |
|
|
Андрей Емельянов |
|
Статус: Сотрудник Группы: Участники Сказал «Спасибо»: 4 раз |
Добрый день. |
Техническую поддержку оказываем тут |
|
|
|
akv1995 |
|
Статус: Новичок Группы: Участники
|
Доброго времени суток! Ситуация с ошибкой аналогичная. На сайте http://webtorgi.samregion.ru/Menu/Page/233 в личном кабинете пытаемся добавить новый сертификат. Ошибка: не удалось открыть хранилище сертификатов отказано в доступе 00000005 |
|
|
Грибанов Антон |
|
Статус: Сотрудник Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Добрый день.Попробуйте следующее: |
Техническую поддержку оказываем тут |
|
|
|
kiril.l@inbox.ru |
|
Статус: Новичок Группы: Участники
|
Добрый день площадка при регистрации ЭЦП на сайте пишет: ошибка создания подписи. ошибка создания хранилища cannot read property «create object async» of undefined. убедитесь что у расширения cryptopro extension for cades browser plugin отмечен флаг: «разрешить открывать файлы по ссылкам» флаг стоит (в инкогнито в том числе) |
|
|
Грибанов Антон |
|
Статус: Сотрудник Группы: Участники Сказал(а) «Спасибо»: 1 раз |
Добрый день. |
Техническую поддержку оказываем тут |
|
|
|
Пользователи, просматривающие эту тему |
Guest |
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.9
»
Ошибка при обращении к хранилищу сертификатов
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
win2016 + 1С 8.3.20 + IIS
Имею веб-сервис опубликованный на IIS, необходимо работать с ЭП (Поиск сертификатов в хранилище и подписание файлов).
Через обработку все работает.
&НаКлиенте
Процедура ПодписатьФайл()
ТипыСертификатов = Новый Массив;
ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.СертификатыПолучателей);
Список = ПолучитьСписокСертификатов(80, ТипыСертификатов, Истина);
Сертификат = Список[0];
МенеджерКриптографии = Новый МенеджерКриптографии(«», «», 80);
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = «»;
ПутьКФайлуШифрованный = ПутьКФайлу + «.sig»;
МенеджерКриптографии.Подписать(ПутьКФайлу, ПутьКФайлуШифрованный, Сертификат);
КонецПроцедуры
&НаСервере
Функция ПолучитьСписокСертификатов(ТипМенеджераКриптографии, МассивТипов, ПроверятьДатуОкончания)
//Списоксертификатов
СписокСертификатов = Новый Массив;
МенеджерКриптографии = Новый МенеджерКриптографии(«», «», ТипМенеджераКриптографии);
Для Каждого ТипХранилища Из ТипыХранилищ Цикл
//Получаемсертификатыдлякаждоготипахранилищасертификатов
Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища);
//Выбираем все сертификаты
СертификатыХранилища = Хранилище.ПолучитьВсе();
ТекущаяДата = ТекущаяДата();
Для Каждого Сертификат Из СертификатыХранилища Цикл
Если ПроверятьДатуОкончания И Сертификат.ДатаОкончания < ТекущаяДата Тогда
//Пропускаем истекшие сертификаты, если нужно
Продолжить;
КонецЕсли;
СписокСертификатов.Добавить(Сертификат);
КонецЦикла;
КонецЦикла;
Возврат СписокСертификатов;
КонецФункции
а через веб-сервис опубликованной базы ничего не работает
Следующий код не пускает в хранилище:
Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилища);
Ошибка при вызове метода контекста (ПолучитьХранилищеСертификатов): Ошибка при открытии хранилища сертификатов (0x00000005)
а здесь пусто:
ХранилищеСертификатов2 = МенеджерКриптографии.ПолучитьХранилищеСертификатов();
Сертификат = ХранилищеСертификатов2.ПолучитьВсе();
Ребята, есть идеи?
Многие пользователи 1С могли столкнуться с данной ошибкой при проведении накладной, которая в журнале регистрации выглядит как
Не удалось выполнить процедуру “Обновление индекса ППД”:
В журнале регистрации она описывается как:
Ошибка доступа к файлу '\User\База\1Cv8FTxt\cfgInfo.dat'. 5(0x00000005): Отказано в доступе.
Данная ошибка может произойти из-за обновления конфигурации, либо внесения изменений в нее.
Первый способ
Первый способ решения проблемы это проверить файл конфигурации 1с location.cfg, который располагается по пути:
C:\Users\User\AppData\Roaming\1C\1cv8\location.cfg
Где в пути “User” это ваше имя пользователя
Данный файл необходимо открыть при помощи текстового редактора и убедиться что содержимое соответствует содержимому ниже:
location=C:\Users\User\AppData\Roaming\1C/1Cv82
Если содержимое другое, то необходимо удалить файл location.cfg, предварительно сделав бэкап этого файла, после чего необходимо создать очистить его.
Второй способ
Во втором варианте при возникновении ошибки доступа к файлу cfginfo.dat решение кроется в самом названии, ошибка может происходить из-за отсутствия прав на данный файл. Необходимо найти файл cfgInfo.dat, который распологается по пути:
C:\Users\User\База\1Cv8FTxt\
После чего необходимо выдать права на запись и чтение на этот файл (Свойства -> Безопасно).
Содержание:
1. Что такое системное хранилище сертификатов?
2. Устранение ошибки системного хранилища в конфигурации программы 1С
1. Что такое системное хранилище сертификатов?
В данной статье будет описано то, как проводить управление системным хранилищем файлов в 1С, а также как устранить ошибку о невозможности найти сертификат руководителя внутри системного хранилища файлов, которая является наиболее распространённой неполадкой в данной области, но, при этом, наименее изученной.
Системное хранилище сертификатов – это некоторая коллекция, внутри которой есть какое-то количество физических хранилищ сертификатов на одном уровне. Все системные хранилища 1С имеют собственное физическое хранилище, уровня элементов.
2. Устранение ошибки системного хранилища в конфигурации программы 1С
При использовании системного хранилища сертификатов, во время отправки отчётов по застрахованным лицам, система начинает отправку отчётностей, но часто, под конец, появляется сначала пустая ошибка, а далее – ошибка с текстом вида «Не удаётся найти сертификат руководителя внутри системного хранилища сертификатов», данные ошибки продемонстрированы на скриншотах с примерами ниже:
Чтобы устранить вышеописанную неполадку, необходимо следовать такому алгоритму:
1. Для начала, нужно определить то, в каком месте хранится данный сертификат руководителя, найти конкретную папку. Так как, необходимо сверить правильно ли программа находит хранилище, есть вероятность, что программа проводит поиск и даёт ссылку не на то хранилище, из-за этого и не находит сертификат;
2. Далее, когда папка с сертификатом найдена, то нужно вручную его выделить и выбрать;
3. Следующим шагом, запускаем криптопровайдер и переводим наш необходимый сертификат в панель «Личные»;
4. После чего, должна быть проведена полная переустановка сертификата из самого хранилища;
5. Проводим повторную установку сертификата в реестр;
6. Дальше нужно открыть конфигурацию системы 1С и перейти во вкладку «Отчёты», кликнуть на «Настройки обмена по фис, пфр, фсс» и избираем нашу учётную запись и кликаем на пункт «Автоматическая настройка»;
7. Однако, стоит отметить, что до автоматической настройки системы необходимо заново запустить систему 1С;
8. Далее проводим сверку, внутри панели настроек криптографии (которые отвечают за электронный документооборот), на то, есть ли сертификат руководителя в 1С (необходимый нам) в перечне сертификатов.
После выполнения всех действий, ошибка возникать не будет. Однако, в случае, если алгоритм не помог – выходом будет только полный перевыпуск сертификата, после чего, новый ключ сертификата подойдёт для криптопро.
В данной статье было описано что такое системное хранилище сертификатов в системе 1С и по какому принципу оно устроено, а также то, как разрешать неполадку о том, что сертификат руководителя организации внутри хранилища не был найден, задан алгоритм устранения ошибки.
Специалист компании «Кодерлайн»
Айдар Фархутдинов