Откуда 1С:Предприятие берёт сертификаты на Windows, Linux и сервере
Содержание
Собственного хранилища сертификатов у платформы 1С:Предприятие 8.3 нет. Сертификаты электронной подписи 1С берёт из хранилища операционной системы или криптопровайдера: в Windows это хранилище Личное текущего пользователя (certmgr.msc), в Linux — хранилище КриптоПро uMy. В самой базе, в справочнике сертификатов, лежит только открытая часть и привязка к пользователю.
Для HTTPS-соединений картина другая. Какие корневые сертификаты доверенные, решает код конфигурации: он указывает платформе, брать их из Windows, из ОС или из файла. Поэтому, когда 1С «не видит» сертификат, первым делом выясните, какой это сертификат и под каким пользователем идёт поиск.
Какие сертификаты нужны 1С и где лежит каждый
Путаница обычно возникает из-за того, что под словом «сертификат» понимают три разные вещи. У каждой своё место.
| Что за сертификат | Для чего | Где хранится |
|---|---|---|
| 🔑 Сертификат ЭП (КЭП, НЭП) с закрытым ключом | Подпись отчётов, ЭДО, маркировка, ЕГАИС | Открытая часть — в хранилище Личное ОС; ключ — в контейнере (реестр, токен, флешка, HDIMAGE) |
| 🏛 Корневые и промежуточные сертификаты УЦ | Построение цепочки доверия для ЭП | Доверенные корневые центры сертификации и Промежуточные центры сертификации |
| 🌐 Сертификаты для TLS (HTTPS) | Обмен с сайтами, API, веб-сервисами | Хранилище ОС, файл PEM или системный bundle Linux |
| 📇 Запись сертификата в базе | Связь «сертификат — пользователь — организация» | Справочник сертификатов ключей электронной подписи и шифрования в информационной базе |
Главное правило: закрытый ключ никогда не хранится в базе 1С. Если ключа нет на компьютере, где выполняется подписание, 1С подписать не сможет, даже если сертификат «есть в программе».
Хранилище сертификатов Windows: что видит 1С
На Windows клиент 1С обращается к хранилищу того пользователя, под которым запущен сеанс. На терминальном сервере это значит: у каждого бухгалтера своё Личное хранилище, и установка сертификата одному не даёт его другому.
Как открыть хранилище
- Нажмите
Win+R. - Для хранилища текущего пользователя введите
certmgr.msc. - Для хранилища компьютера —
certlm.msc(нужны права администратора). - Откройте
Личное → Сертификаты. Там должны быть сертификаты подписи с иконкой ключа.
Корневые сертификаты УЦ смотрите в ветке Доверенные корневые центры сертификации, промежуточные — в Промежуточные центры сертификации.
Из командной строки то же самое показывает certutil:
:: личное хранилище текущего пользователя
certutil -user -store My
:: личное хранилище компьютера
certutil -store My
:: корневые сертификаты компьютера
certutil -store Root
Где физически лежит ключ
С КриптоПро CSP контейнер может быть на токене (Рутокен, JaCarta), на флешке или в реестре. Ключи со считывателя «Реестр» в 64-битной Windows лежат в ветке HKLM\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\<SID>\Keys, где SID — идентификатор пользователя.
Если сертификат в Личное есть, но значок ключа отсутствует, значит, связь с контейнером потеряна. Восстанавливается она в КриптоПро CSP: вкладка Сервис → Просмотреть сертификаты в контейнере, выбрать контейнер, нажать «Установить».
Перенесли базу на новый компьютер — сертификаты не переедут вместе с ней. Контейнер копируется отдельно средствами КриптоПро, а сертификат потом заново устанавливается в Личное.
Где сертификаты в самой программе 1С
В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) список сертификатов ведётся в настройках электронной подписи. Это не хранилище в полном смысле, а реестр: какой сертификат кому принадлежит и для какой организации используется.
| Конфигурация | Путь |
|---|---|
| Бухгалтерия 3.0 | Администрирование → Общие настройки → Электронная подпись и шифрование → Настройки электронной подписи и шифрования |
| ЗУП 3.1 | Администрирование → Общие настройки → Электронная подпись и шифрование → Настройки электронной подписи и шифрования |
| УТ 11 | НСИ и администрирование → Администрирование → Общие настройки → Электронная подпись и шифрование |
В открывшейся форме три вкладки, которые нужны чаще всего:
- 📇 Сертификаты — список добавленных сертификатов. Кнопка «Добавить» предлагает выбрать сертификат из
Личноехранилища ОС. - ⚙️ Программы — какой криптопровайдер использует 1С (КриптоПро CSP, ViPNet CSP), путь к библиотеке на Linux.
- 🖥 Настройки — где выполнять подписание и проверку: на клиенте или на сервере.
Карточка сертификата в базе хранит его открытую часть, владельца, организацию и срок действия. Через кнопку проверки в карточке 1С по очереди пробует найти сертификат в хранилище, подписать тестовые данные и проверить подпись. Это самый быстрый способ понять, на каком шаге ломается цепочка.
Удаление сертификата из справочника не удаляет его из Windows и не трогает ключ. И наоборот: удалили сертификат в certmgr.msc — в справочнике запись останется, но подписывать она уже не сможет.
Хранилище сертификатов в Linux: КриптоПро и системные CA
В Linux у клиента 1С нет доступа к certmgr.msc, и сертификаты ЭП живут в хранилищах КриптоПро CSP для Linux. Утилита certmgr лежит в /opt/cprocsp/bin/amd64/.
Хранилища КриптоПро
| Хранилище | Что в нём | Кто может менять |
|---|---|---|
uMy | Личные сертификаты пользователя | Сам пользователь |
uRoot | Доверенные корневые пользователя | Сам пользователь |
uCA | Промежуточные пользователя | Сам пользователь |
mRoot, mCA | Корневые и промежуточные для всего компьютера | root |
Контейнеры с ключами на диске (считыватель HDIMAGE) лежат в /var/opt/cprocsp/keys/<имя_пользователя>/.
Основные команды:
# список личных сертификатов
/opt/cprocsp/bin/amd64/certmgr -list -store uMy
# установить сертификат из контейнера в личное хранилище
/opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\имя_контейнера'
# установить корневой сертификат УЦ для всего компьютера
sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file root.cer
В настройках электронной подписи 1С на вкладке «Программы» для Linux укажите путь к библиотеке КриптоПро: /opt/cprocsp/lib/amd64/libcapi20.so.
Системные корневые сертификаты для HTTPS
Для TLS-соединений через OpenSSL нужен системный набор корневых сертификатов. Добавить свой корневой сертификат:
- 🐧 Debian, Ubuntu, Astra: положить файл с расширением
.crtв/usr/local/share/ca-certificates/и выполнитьsudo update-ca-certificates. Итоговый bundle —/etc/ssl/certs/ca-certificates.crt. - 🎩 RHEL, РЕД ОС, ALT (с пакетом ca-trust): положить файл в
/etc/pki/ca-trust/source/anchors/и выполнитьsudo update-ca-trust.
Сервер 1С и консоль кластера: под чьей учёткой искать
Самая частая ловушка — подписание или проверка на сервере 1С. В этом случае работает не клиент, а рабочий процесс rphost. Он запущен от служебной учётной записи, обычно USR1CV8 в Windows или usr1cv8 в Linux, и смотрит в хранилище именно этого пользователя.
Что проверить через консоль
- Откройте консоль администрирования серверов 1С.
- Разверните
Кластеры → <ваш кластер> → Рабочие серверы. - Выпишите все рабочие серверы. Подписание на сервере может выполниться на любом из них, поэтому КриптоПро и сертификат нужны на каждом.
- В
services.msc(Windows) найдите службу «Агент сервера 1С:Предприятия» и посмотрите на вкладке «Вход в систему», от какого пользователя она работает.
Как дать сертификат служебной учётке
- Windows. Либо установите сертификат в хранилище компьютера (
certlm.msc) с доступным службе контейнером, либо войдите под служебным пользователем (runas /user:USR1CV8 mmc) и установите сертификат в егоЛичное. - Linux. Выполните установку от имени пользователя сервера:
sudo -u usr1cv8 /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\имя_контейнера'
Контейнер при этом должен лежать в /var/opt/cprocsp/keys/usr1cv8/.
Перезапуск службы агента сервера 1С обрывает сеансы всех пользователей. Если после установки сертификата сервер его не видит и нужен перезапуск, делайте его вне рабочего времени и предупредите людей.
Как конфигурация выбирает сертификаты для HTTPS
Для веб-запросов хранилище задаёт сам код. Объект ЗащищенноеСоединениеOpenSSL принимает два параметра: клиентский сертификат и источник корневых сертификатов.
| Источник корневых сертификатов | Откуда берутся |
|---|---|
СертификатыУдостоверяющихЦентровWindows | Хранилище Windows (Доверенные корневые центры сертификации) |
СертификатыУдостоверяющихЦентровФайл | Файл PEM, путь передаётся в конструктор |
СертификатыУдостоверяющихЦентровОС | Хранилище ОС, есть в современных версиях платформы |
| Не указан | Сертификат сервера не проверяется вовсе |
Пример соединения с проверкой по хранилищу Windows:
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение("api.example.ru", 443, , , , 30, ЗащищенноеСоединение);
На Linux тот же код с файлом:
КорневыеСертификаты = Новый СертификатыУдостоверяющихЦентровФайл("/etc/ssl/certs/ca-certificates.crt");
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, КорневыеСертификаты);
Клиентский сертификат (когда сервис требует авторизацию по сертификату) передаётся первым параметром: Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать) или Новый СертификатКлиентаФайл(ПутьКФайлу, Пароль) для файла PFX.
Сайт с российским сертификатом от НУЦ Минцифры не откроется, пока его корневой сертификат не добавлен в хранилище: в Доверенные корневые центры сертификации на Windows или в системный набор на Linux.
Ошибки сертификатов в 1С: диагностика и журналы
Разбирайте проблему по шагам: есть ли сертификат в хранилище нужного пользователя → видит ли его 1С → строится ли цепочка до корня → доступен ли ключ.
update-ca-certificates или update-ca-trust.Промежуточные центры сертификации (Windows) или допишите его в PEM-файл.Личное того пользователя, под которым запущена 1С, или в настройках не выбрана программа КриптоПро. Проверьте certmgr.msc в той же сессии.Где смотреть подробности
- 📜 Журнал регистрации:
Администрирование → Обслуживание → Журнал регистрации. Отберите события по пользователю и времени ошибки: там видно полный текст исключения. - 🧾 Технологический журнал — если ошибка возникает на сервере и до пользователя доходит неполной. Создайте файл
logcfg.xmlв каталогеconfплатформы (C:\Program Files\1cv8\conf\или/opt/1cv8/conf/) и включите сбор событийEXCP:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1c_techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Технологический журнал быстро растёт. Включайте его на время воспроизведения ошибки и удаляйте logcfg.xml сразу после.
- 🔍 Openssl для проверки сайта со стороны сервера:
openssl s_client -connect api.example.ru:443 -showcertsпокажет цепочку, которую отдаёт сервер, и на каком сертификате обрывается доверие.
Обновление сертификатов без простоев: проверка сроков и скрипты
Квалифицированный сертификат ЭП обычно выпускают на 12–15 месяцев. Просроченный сертификат в 1С выглядит как «сломанная подпись» в день сдачи отчётности, поэтому сроки лучше проверять заранее.
Скрипт проверки на Windows
PowerShell выведет сертификаты из Личное, которые истекают в ближайшие 30 дней:
Get-ChildItem Cert:\CurrentUser\My |
Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) } |
Select-Object Subject, NotAfter, Thumbprint
Для хранилища компьютера замените CurrentUser на LocalMachine. Скрипт можно повесить в планировщик заданий и отправлять результат на почту администратору.
Проверка на Linux
Срок файлового сертификата показывает OpenSSL:
openssl x509 -enddate -noout -in /usr/local/share/ca-certificates/myca.crt
Для сертификатов КриптоПро смотрите строку Not valid after в выводе certmgr -list -store uMy. Ту же команду удобно запускать по cron от имени usr1cv8 на рабочих серверах кластера.
Порядок замены сертификата ЭП
Корневые сертификаты для HTTPS на Windows обновляются через Центр обновления. На сервере без интернета их придётся завозить вручную, иначе обмены начнут падать после смены сертификата у сайта-партнёра.
Частые вопросы
Можно ли хранить сертификат прямо в базе 1С, чтобы он был у всех пользователей?
Почему в файловой базе подписание на сервере работает так же, как на клиенте?
Нужно ли устанавливать сертификат в хранилище компьютера?
Личное его пользователя.Как узнать, каким хранилищем пользуется обмен по HTTPS в конфигурации?
ЗащищенноеСоединениеOpenSSL и посмотрите второй параметр. В типовых конфигурациях на БСП он формируется общей функцией, и для неё нужна ОС с актуальными корневыми сертификатами.Что делать, если токен вставлен, а 1С пишет, что сертификат не найден?
Личное и перезапустите сеанс 1С.