Сертификат подписи не работает в 1С: проверяем от карточки до сервера
Содержание
Проверить сертификат в 1С 8.3 проще всего из самой базы. Откройте Администрирование → Общие настройки → Электронная подпись и шифрование, перейдите в настройки, откройте нужный сертификат на вкладке «Сертификаты» и запустите проверку командой «Проверить». Программа по очереди проверит данные сертификата, доступ к закрытому ключу, подписание, проверку подписи, шифрование и расшифровку. По красному пункту видно, где именно сбой.
Частое заблуждение — «сертификат действует до декабря, значит, с ним всё в порядке». Срок действия — лишь одна из проверок. Сертификат с живым сроком спокойно падает на цепочке доверия, на недоступном списке отзыва или на потерянной связи с ключевым контейнером. Причину быстрее найти по порядку: карточка в 1С, ключ и контейнер, хранилища, цепочка доверия, затем сервер.
Где в 1С найти сертификат и запустить встроенную проверку
Механизм электронной подписи в типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP) построен на одной библиотеке стандартных подсистем. Поэтому порядок действий почти одинаковый, отличается только расположение раздела.
| Конфигурация | Где включаются и настраиваются подписи |
|---|---|
| Бухгалтерия 3.0 | Администрирование → Общие настройки → Электронная подпись и шифрование |
| ЗУП 3.1 | Администрирование → Общие настройки → Электронная подпись и шифрование |
| УТ 11, КА 2, ERP | НСИ и администрирование → Общие настройки → Электронная подпись и шифрование |
В разделе должен стоять флажок использования электронных подписей. Под ним — ссылка на настройки. Главное в них:
- 📄 Сертификаты — справочник сертификатов, добавленных в базу;
- ⚙️ Программы — криптопровайдеры (КриптоПро CSP, ViPNet CSP), через которые 1С работает с ключами;
- 🧩 у новых релизов — отдельная настройка облачной подписи и сервиса подписи, если вы им пользуетесь.
Как читать результат проверки
- Откройте сертификат двойным щелчком.
- Нажмите «Проверить» и введите пароль ключа, если он задан (для токена — PIN-код).
- Дождитесь, пока все пункты получат статус.
Зелёный пункт — проверка пройдена. Красный — сбой, и рядом есть ссылка с текстом ошибки. Текст ошибки и есть главный инструмент диагностики: его стоит скопировать полностью, а не пересказывать своими словами.
Если сертификата нет в списке, хотя он установлен на компьютере, добавьте его кнопкой «Добавить» → «Из установленных на компьютере». В списке появятся только те сертификаты, которые видит криптопровайдер текущего пользователя Windows.
Пункт «Программа» в карточке указывает, через какой криптопровайдер 1С будет работать с этим ключом. Если поле пустое или там выбран провайдер, которого нет на компьютере, проверка упадёт уже на подписании.
Срок, ключ и целостность: проверка сертификата через КриптоПро
Когда 1С говорит «ошибка подписания», первым делом убедитесь, что сертификат вообще работоспособен вне 1С. Для этого есть программа «Инструменты КриптоПро» (в старых версиях — «КриптоПро CSP» в панели управления).
Что смотреть в «Инструментах КриптоПро»
- Раздел «Сертификаты» → хранилище «Личное». Откройте сертификат и проверьте поля «Действителен с» и «Действителен по».
- Убедитесь, что у сертификата есть закрытый ключ. В Windows это видно по надписи «Есть закрытый ключ, соответствующий этому сертификату» на вкладке «Общие».
- Раздел «Контейнеры». Выберите контейнер и нажмите «Протестировать контейнер». Программа проверит, что ключ читается и пароль верный.
- Проверьте лицензию КриптоПро CSP в разделе общих сведений. Истёкшая лицензия криптопровайдера даёт ошибку подписания даже при живом сертификате.
Те же проверки из командной строки
Утилиты лежат в папке установки КриптоПро, обычно C:\Program Files\Crypto Pro\CSP\.
:: список личных сертификатов текущего пользователя
"C:\Program Files\Crypto Pro\CSP\certmgr.exe" -list -store uMy
:: список ключевых контейнеров с полными именами
"C:\Program Files\Crypto Pro\CSP\csptest.exe" -keyset -enum_cont -fqcn -verifyc
В выводе certmgr смотрите поля Not valid after (дата окончания) и строку о привязке к контейнеру. Если сертификат есть, а контейнера в списке csptest нет, значит, ключ лежит на неподключённом носителе или был удалён.
Квалифицированный сертификат и ключ — разные вещи. Сертификат можно скопировать куда угодно, а подписать без закрытого ключа нельзя. Поэтому «сертификат установлен» ещё не значит «подпись работает».
Хранилища сертификатов и привязка к контейнеру
Windows хранит сертификаты в нескольких хранилищах, и путаница между ними — частая причина сбоя. Посмотреть их можно оснасткой certmgr.msc (текущий пользователь) и certlm.msc (локальный компьютер).
| Хранилище | Что там должно лежать |
|---|---|
| Личное (Personal / My) | Ваш сертификат с привязкой к закрытому ключу |
| Доверенные корневые центры сертификации | Корневой сертификат Минцифры (головной удостоверяющий центр) |
| Промежуточные центры сертификации | Сертификат УЦ, выдавшего ваш сертификат (например, УЦ ФНС), и списки отзыва |
Как восстановить связь сертификата с ключом
Бывает, что сертификат в «Личном» есть, а закрытого ключа у него нет. Например, после переустановки Windows или если сертификат установили простым двойным щелчком по файлу .cer.
- Подключите носитель с ключом (токен или флешку).
- В «Инструментах КриптоПро» выберите контейнер и выполните установку сертификата из контейнера. В классической панели КриптоПро CSP это вкладка «Сервис» → «Просмотреть сертификаты в контейнере» → «Установить».
- Перезапустите 1С и повторите проверку в карточке сертификата.
После этого сертификат в «Личном» снова получит пометку о закрытом ключе.
Если ключ на токене, а 1С работает в терминальной сессии, проверьте, что токен проброшен в сессию. КриптоПро на терминальном сервере видит только то, что доступно этому пользователю в этой сессии.
Цепочка доверия и списки отзыва: как проверить сертификат за пределами 1С
Цепочка доверия — это путь от вашего сертификата через сертификат УЦ к корневому сертификату. Если хотя бы одного звена нет на компьютере, 1С не примет подпись, даже если ключ работает.
Быстрая проверка в окне сертификата
Откройте сертификат и перейдите на вкладку «Путь сертификации». Внизу есть строка «Состояние сертификата». Варианты:
- ✅ «Этот сертификат действителен» — цепочка построена;
- ❌ сообщение о невозможности проверить сертификат до доверенного центра — не хватает корневого или промежуточного сертификата;
- ❌ сообщение о невозможности проверить статус отзыва — недоступен список отзыва (CRL).
Полная проверка через certutil
Встроенная утилита Windows проверяет всю цепочку и при этом скачивает списки отзыва по адресам из сертификата:
certutil -verify -urlfetch C:\temp\my_cert.cer
Сначала выгрузите сертификат в файл .cer (в окне сертификата: «Состав» → «Копировать в файл»). В выводе certutil видно каждое звено цепочки и результат обращения к каждой точке распространения CRL. Строка с ошибкой загрузки укажет конкретный адрес, который не открывается.
Если список отзыва не скачивается
Чаще всего виноваты прокси, файрвол или закрытый доступ сервера в интернет.
- Откройте адрес из поля «Точки распространения списков отзыва» в браузере на той же машине.
- Если файл
.crlскачивается, установите его вручную в хранилище промежуточных центров сертификации. - Если не скачивается — откройте доступ к адресам УЦ на прокси или файрволе.
- Очистите кэш URL Windows, чтобы система не держала устаревший CRL:
certutil -urlcache * delete
Вручную установленный CRL имеет свой срок действия. Через несколько дней ошибка вернётся, если доступ к адресам УЦ так и не открыли. Ручная установка — временная мера.
Корневой сертификат Минцифры и сертификаты УЦ скачивайте только с официальных ресурсов удостоверяющего центра или портала госуслуг. Не ставьте корневые сертификаты из случайных архивов: подменённый корень позволяет выдать поддельную подпись за настоящую.
Проверка сертификатов в файловой и клиент-серверной базе
Где физически выполняется криптография, зависит от режима работы базы и настроек. От этого зависит, на каком компьютере искать проблему.
| Режим | Где выполняются подписание и проверка | Что должно быть установлено |
|---|---|---|
| Файловая база | На компьютере пользователя | Криптопровайдер, сертификат, ключ, цепочка — у пользователя |
| Клиент-сервер, операции на клиенте | На компьютере пользователя | То же, что для файловой базы |
| Клиент-сервер, операции на сервере | На сервере 1С | Криптопровайдер с лицензией и цепочка доверия — на сервере |
| Веб-клиент | В браузере через расширение | Расширение для работы с 1С в браузере и криптопровайдер у пользователя |
Проверка на сервере 1С
В настройках электронной подписи есть флажки, которые переносят проверку подписей и сертификатов на сервер, а также подписание на сервере. Если они включены, проверка в карточке сертификата пройдёт на клиенте, а реальный документ упадёт на сервере. Это частая ловушка.
Что проверить на сервере:
- На сервере установлен КриптоПро CSP с действующей серверной лицензией.
- Корневой и промежуточные сертификаты установлены в хранилища локального компьютера (
certlm.msc), а не текущего пользователя. Служба 1С работает под своей учётной записью и не видит хранилища вашего профиля. - Если подписание идёт на сервере, ключ и личный сертификат должны быть доступны учётной записи, под которой запущена служба агента сервера 1С.
- Сервер имеет доступ к адресам списков отзыва.
На Linux-сервере те же проверки выполняются консольной утилитой КриптоПро:
/opt/cprocsp/bin/amd64/certmgr -list -store uMy
/opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Команды нужно выполнять от имени пользователя, под которым работает сервер 1С, иначе вы увидите хранилище другого пользователя.
После установки КриптоПро или сертификатов на сервере может понадобиться перезапуск службы агента сервера 1С. Перезапуск обрывает все сеансы пользователей, поэтому делайте его после рабочего дня и предупредите людей заранее.
Контроль срока действия: напоминания и автоматическая проверка
Истёкший сертификат — самая предсказуемая проблема, и её проще всего не допустить. Квалифицированный сертификат обычно выпускают на 12–15 месяцев. Новый лучше получить за 2–3 недели до окончания старого.
Средства самой 1С
Типовые конфигурации предупреждают о скором окончании срока сертификата в «Текущих делах» и при входе в программу. Чтобы напоминание сработало, сертификат должен быть добавлен в справочник сертификатов базы. В карточке сертификата у многих релизов можно отключить напоминание — проверьте, что его не отключили.
Для 1С-Отчётности срок сертификата дополнительно видно в учётной записи документооборота. Там же есть тест настроек, который проверяет связь с оператором и работу подписи.
Проверка всех сертификатов на компьютере скриптом
Если на терминальном сервере или у бухгалтерии десятки сертификатов, удобно запускать проверку по расписанию через планировщик Windows. Пример на PowerShell выводит личные сертификаты, которые истекут в ближайшие 30 дней:
$limit = (Get-Date).AddDays(30)
Get-ChildItem Cert:\CurrentUser\My |
Where-Object { $_.NotAfter -lt $limit } |
Select-Object Subject, NotAfter, Thumbprint |
Format-Table -AutoSize
Для хранилища компьютера замените Cert:\CurrentUser\My на Cert:\LocalMachine\My. Вывод можно сохранять в файл и отправлять администратору.
Проверка из кода 1С
Для своей обработки или регламентного задания подойдёт объект МенеджерКриптографии. Пример для клиента с КриптоПро CSP (тип провайдера 80 — ГОСТ 2012 с ключом 256 бит):
Менеджер = Новый МенеджерКриптографии(
"Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", "", 80);
Хранилище = Менеджер.ПолучитьХранилищеСертификатов(
ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
Граница = ТекущаяДата() + 30 * 86400;
Для Каждого Сертификат Из Хранилище.ПолучитьВсе() Цикл
Если Сертификат.ДатаОкончания < Граница Тогда
Сообщить(СтрШаблон("%1 — действует до %2",
Сертификат.Субъект.CN, Формат(Сертификат.ДатаОкончания, "ДЛФ=D")));
КонецЕсли;
КонецЦикла;
Если в сертификате нет поля CN, обращение к нему вызовет ошибку. Для боевой обработки добавьте проверку наличия поля через Сертификат.Субъект.Свойство("CN").
Ошибки проверки сертификата и что за ними стоит
Тексты ошибок зависят от криптопровайдера и версии Windows, но смысл у них повторяется. Выберите свой симптом:
Если ни один вариант не подошёл, запустите проверку в карточке сертификата ещё раз и пройдите по ссылке у красного пункта. Там полный технический текст ошибки, который нужен поддержке УЦ или оператора ЭДО.
Частые вопросы
Можно ли проверить чужую подпись, если у меня нет её сертификата?
Почему подпись была верной, а через год стала недействительной?
Нужно ли добавлять сертификат в 1С заново после продления?
Можно ли одним сертификатом работать на двух компьютерах?
Где хранится сертификат в базе 1С?
Источники
- Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи»