К статье
Практический материал

Администрирование · 10 мин

Системное хранилище сертификатов 1С 8.3: как найти и работать с ним

Где находится системное хранилище сертификатов в 1С 8.3, как открыть его из конфигуратора и клиента, выбрать сертификат для подписания и решить типовые ошибки доступа.

Под системным хранилищем сертификатов в 1С 8.3 обычно понимают хранилище сертификатов операционной системы, к которому платформа обращается при работе с электронной подписью, защищёнными соединениями и обменом с контролирующими органами. У самой платформы 1С нет собственного файлового каталога с сертификатами — она использует механизмы Windows (CryptoAPI) или средства криптопровайдера в Linux.

Именно поэтому вопрос «как найти системное хранилище» чаще всего означает одну из трёх задач: открыть список доступных сертификатов из интерфейса 1С, понять, почему нужный сертификат не виден программе, или программно получить сертификат из встроенного языка. Ниже разобраны все три сценария с конкретными шагами.

Важно понимать различие: сертификат может быть установлен в системе, но недоступен конкретному пользователю или службе, под которой работает сервер 1С. Большинство проблем с «невидимыми» сертификатами связано именно с контекстом учётной записи, а не с отсутствием сертификата как такового.

Где физически находится хранилище сертификатов

В Windows сертификаты хранятся в системном реестре и профилях пользователей, а доступ к ним предоставляет оснастка certmgr.msc (хранилище текущего пользователя) и certlm.msc (хранилище локального компьютера). 1С при работе с криптографией обращается именно к этим хранилищам через CryptoAPI или через внешнюю компоненту криптопровайдера (КриптоПро CSP, ViPNet CSP).

Разделы, которые чаще всего используются при работе с 1С: «Личное» (Personal) — сертификаты с закрытыми ключами для подписания; «Доверенные корневые центры сертификации» — цепочки доверия; «Промежуточные центры сертификации» — промежуточные звенья. Если сертификат установлен в хранилище другого пользователя, 1С под текущей учётной записью его не увидит.

В Linux хранилище зависит от используемого криптопровайдера. Для КриптоПро CSP сертификаты и контейнеры ключей размещаются в каталогах провайдера и управляются его утилитами (например, certmgr из состава КриптоПро). Платформа 1С на Linux работает с криптографией через эти же средства.

Как открыть список сертификатов из интерфейса 1С

В типовых конфигурациях (Бухгалтерия предприятия, Зарплата и управление персоналом, Управление торговлей и другие на БСП) есть штатный механизм «Электронная подпись и шифрование». Путь обычно такой: раздел «Администрирование» → «Обмен электронными документами» → «Электронная подпись». Там доступны сертификаты, добавленные в программу, и настройки программ криптографии.

При добавлении сертификата программа предложит два варианта: выбрать из установленных на компьютере (то есть из системного хранилища) или из файла. Вариант «из установленных» открывает диалог, в котором перечислены сертификаты личного хранилища текущего пользователя — это и есть практический способ «найти» системное хранилище из 1С.

Если типовой подсистемы нет или конфигурация самописная, список можно получить программно. Платформа предоставляет объекты «МенеджерКриптографии» и «ХранилищеСертификатовКриптографии», которые возвращают коллекцию сертификатов указанного хранилища.

Порядок действий в типовой конфигурации
  1. 1
    Откройте «Администрирование» → «Обмен электронными документами» → «Электронная подпись»
  2. 2
    Убедитесь, что включён флаг использования электронных подписей
  3. 3
    Нажмите «Добавить» в списке сертификатов и выберите «Из установленных на компьютере»
  4. 4
    В открывшемся диалоге найдите нужный сертификат по владельцу и сроку действия
  5. 5
    Сохраните настройку и проверьте подписание тестового документа

Программный доступ к хранилищу из встроенного языка

Для разработчиков и администраторов, работающих с кодом, платформа 8.3 предоставляет прямой доступ к хранилищам. Метод ПолучитьХранилищеСертификатов менеджера криптографии позволяет указать тип хранилища (персональные сертификаты, корневые и другие) и получить все содержащиеся в нём сертификаты.

bsl
Менеджер = Новый МенеджерКриптографии("", "", 75);
Хранилище = Менеджер.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
Сертификаты = Хранилище.ПолучитьВсе();
Для Каждого Сертификат Из Сертификаты Цикл
    Сообщить(Сертификат.Субъект.CN);
КонецЦикла;

Параметры конструктора менеджера криптографии (имя программы, тип, путь) зависят от установленного криптопровайдера. Для КриптоПро CSP и ViPNet CSP значения различаются; если оставить параметры пустыми, платформа попробует использовать провайдер по умолчанию, что не всегда срабатывает при наличии нескольких установленных CSP.

Найти конкретный сертификат можно методом НайтиПоОтпечатку или НайтиПоСерийномуНомеру хранилища. Это удобно, когда сертификат уже указан в настройках обмена и нужно проверить его доступность перед подписанием.

Почему сертификат не виден в 1С и что проверить

Самая частая причина — сертификат установлен в хранилище одного пользователя, а 1С запущена под другим. Это особенно актуально для клиент-серверного режима: если подписание выполняется на сервере, сертификат должен быть доступен учётной записи агента сервера 1С (по умолчанию это служебная учётная запись, а не пользователь-администратор).

Вторая причина — отсутствие привязки к закрытому ключу. Сертификат без закрытого ключа отображается в хранилище, но не может использоваться для подписания. В оснастке certmgr.msc такой сертификат открывается без пометки «Есть закрытый ключ для этого сертификата».

Третья группа причин — криптопровайдер: не установлен или не лицензирован CSP, несовпадение версии компоненты, разрядности (32/64 бита) или настроек. 1С в этом случае либо не видит контейнеры ключей, либо возвращает ошибку при создании менеджера криптографии.

Контрольные точки

Как проверить результат

Сертификат в certmgr.msc
Норма

Виден в разделе «Личное», при открытии указано «Есть закрытый ключ»

Тревожный признак

Сертификат отсутствует или открывается без упоминания закрытого ключа

Доступность из 1С
Норма

Сертификат отображается в диалоге выбора и подписывает тестовый документ

Тревожный признак

Список пуст или подписание завершается ошибкой криптографии

Контекст учётной записи
Норма

Сертификат установлен для той учётной записи, под которой работает клиент или сервер 1С

Тревожный признак

Сертификат виден только администратору, а служба работает под другой учётной записью

Особенности клиент-серверного режима и веб-клиента

В файловом режиме криптография обычно выполняется на компьютере пользователя, и достаточно установить сертификат в его профиль. В клиент-серверном варианте место выполнения определяется настройками конфигурации: если подписание вынесено на сервер, сертификаты и криптопровайдер должны быть развёрнуты на сервере 1С, причём для учётной записи агента сервера.

Установить сертификат для служебной учётной записи можно через оснастку MMC с добавлением «Сертификаты» для учётной записи службы или компьютера, либо средствами криптопровайдера. В КриптоПро CSP контейнеры ключей могут размещаться в хранилище компьютера, что делает их доступными службам.

В веб-клиенте работа с криптографией требует установки расширения работы с криптографией в браузере и компоненты на компьютере пользователя. Без этого веб-клиент не получит доступ к системному хранилищу, даже если сертификаты корректно установлены.

Типовые ошибки и ограничения

Распространённая ошибка — поиск «папки с сертификатами 1С» в каталоге установки платформы или базы. Такого каталога не существует: платформа не хранит сертификаты, а только ссылки на них (отпечатки) в настройках информационной базы. Переустановка платформы сертификаты не затрагивает, а переустановка Windows — затрагивает.

Ещё одна ошибка — ожидание, что сертификат, загруженный из файла в настройки 1С, автоматически появится в системном хранилище. Это разные механизмы: сертификат из файла хранится в данных конфигурации, а для подписания всё равно требуется доступ к закрытому ключу через криптопровайдер.

Типичные ошибки
01
Установка сертификата только под администратором — под рабочей учётной записью или службой сервера он остаётся невидимым
02
Импорт сертификата без закрытого ключа — подписание невозможно, хотя сертификат отображается в списке
03
Игнорирование разрядности криптопровайдера — 64-разрядный сервер 1С не работает с 32-разрядной версией компоненты
04
Поиск сертификатов в каталоге платформы — 1С не хранит их в файловой структуре, а читает из системного хранилища

FAQ

Можно ли хранить сертификат не в системном хранилище, а в файле?

Да, типовые конфигурации позволяют добавить сертификат из файла, и он будет храниться в данных информационной базы. Однако для подписания всё равно нужен доступ к закрытому ключу через криптопровайдер — файл сертификата без ключа позволяет только проверять подпись и шифровать, но не подписывать.

Как открыть системное хранилище Windows без 1С?

Нажмите Win+R и выполните certmgr.msc для хранилища текущего пользователя или certlm.msc для хранилища компьютера (требуются права администратора). Личные сертификаты с ключами находятся в разделе «Личное» → «Сертификаты».

Почему сертификат виден в Windows, но не виден в 1С?

Чаще всего дело в контексте учётной записи (1С или сервер работают под другим пользователем), отсутствии закрытого ключа или неподходящем криптопровайдере. Проверьте, под какой учётной записью выполняется код, и убедитесь, что CSP установлен и лицензия активна.

Где искать сертификаты на сервере 1С под Linux?

Платформа использует средства установленного криптопровайдера. Для КриптоПро CSP список сертификатов и контейнеров просматривается утилитами провайдера (например, certmgr и csptest из его состава), а доступ должен быть у пользователя, под которым работает агент сервера 1С.

Что делать, если после обновления платформы сертификаты «пропали»?

Само обновление платформы хранилище не очищает. Проверьте, не изменилась ли разрядность клиента или сервера (32/64 бита) — криптопровайдер и компоненты должны соответствовать новой разрядности. Также убедитесь, что настройки криптографии в конфигурации указывают на существующую программу криптографии.

Итог

Что важно запомнить

Системное хранилище сертификатов 1С 8.3 — это хранилище операционной системы, доступное через оснастки certmgr.msc/certlm.msc, диалог выбора сертификата в типовых конфигурациях или программно через МенеджерКриптографии. Ключ к большинству проблем — правильный контекст учётной записи, наличие закрытого ключа и корректно установленный криптопровайдер.