Как исправить ошибку "Сертификат не признан квалифицированным на дату проверки" при подписании ЭДО в 1С:БГУ 2.0 и других конфигурациях?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

В процессе работы с электронным документооборотом (ЭДО) в различных программах на платформе 1С:Предприятие 8, включая 1С:Бухгалтерию государственного учреждения 2.0 (БГУ 2.0), особенно после обновления информационных баз до новых релизов, например, 2.0.100.36, пользователи могут столкнуться с критической проблемой. Эта ошибка проявляется при попытке подписания исходящих электронных документов и звучит следующим образом: "Сертификат не признан квалифицированным на дату проверки ДД.ММ.ГГГГ ЧЧ:ММ по причине: • ключ электронной подписи не действует на дату проверки". Столь досадная ситуация не только задерживает, но и полностью блокирует отправку важных документов, требующих электронной подписи. В рамках этой статьи мы подробно рассмотрим природу данной ошибки, выясним ее ключевые причины и представим пошаговые инструкции по ее эффективному устранению, используя как официальные исправления, так и программные методы.

Глубокий анализ причин возникновения ошибки

Для того чтобы эффективно решить проблему, мы должны сначала понять ее корень. Основная причина этой ошибки связана с изменениями в законодательстве Российской Федерации, касающимися использования квалифицированных электронных подписей (КЭП), и последующим обновлением логики проверки сертификатов в программных продуктах 1С. В частности, Приказ ФСБ России от 2 февраля 2024 года № 50, который вступил в силу 1 сентября 2024 года, установил новые требования к структуре квалифицированных сертификатов, обязывая их содержать информацию о сроке действия закрытого ключа. Это означает, что не только сам сертификат должен быть действителен, но и связанный с ним закрытый ключ должен иметь определенный, неистекший период активности.

После обновления модулей 1С-ЭДО, которые входят в состав новых релизов конфигураций (таких как БГУ 2.0.100.36, Бухгалтерия предприятия 3.0, 1С:Документооборот), программа начинает более строго проверять все сертификаты на соответствие этим новым требованиям. Эта проверка применяется даже к тем сертификатам, которые были выданы до вступления изменений в силу. Если в сертификате по какой-либо причине отсутствует, некорректно определен или неверно интерпретируется срок действия закрытого ключа, система 1С-ЭДО генерирует сообщение об ошибке, указывающее на "недействительность ключа электронной подписи на дату проверки".

Технически, проблема обычно локализована в функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату. Эта функция, отвечающая за проверку активности закрытого ключа, в определенных условиях может некорректно обрабатывать ситуацию, когда дата окончания его действия не заполнена или отсутствует в стандартной структуре сертификата. Это особенно актуально для некоторых старых форматов сертификатов или специфических удостоверяющих центров, которые могли не включать эту информацию в явном виде. В таких случаях программа ошибочно считает ключ недействительным, хотя по факту он может быть полностью рабочим и активным.

Решение 1: Применение официальных исправлений (патчей) от 1С

Наиболее рекомендуемым и, как правило, самым быстрым способом устранения данной ошибки является установка официальных исправлений, которые регулярно выпускаются фирмой "1С". Разработчики оперативно реагируют на подобные критические ошибки, связанные с изменениями в законодательстве и технологиях, выпуская специализированные патчи.

  1. Идентификация и получение актуального патча:

    Для данной проблемы одним из ключевых и наиболее часто решающих является патч с идентификатором EF_00_00673631. Этот патч специально разработан для корректировки логики некорректной проверки действующих сертификатов в модулях 1С-ЭДО. Важно учитывать, что для самых последних версий конфигурации 1С:Бухгалтерия государственного учреждения 2.0 данный патч может быть уже интегрирован в релиз, и его отдельная установка не потребуется. Однако для других конфигураций, например, 1С:Бухгалтерия предприятия 3.0, 1С:Документооборот или предыдущих версий БГУ, его установка может быть критически необходимой.

    Мы можем получить патчи через официальный портал 1С:ИТС или через встроенный механизм обновления в самой программе.

  2. Процедура установки патча:

    Для установки патча мы рекомендуем использовать штатные механизмы, предусмотренные в программе 1С. Обычно доступ к ним осуществляется через главное меню: "Администрирование" -> "Обслуживание" -> "Обновление программы" -> "Установка исправлений (патчей)". В этом разделе мы сможем увидеть список доступных патчей и выполнить их установку.

    Мы настоятельно рекомендуем включить опцию автоматической загрузки и установки исправлений (патчей) в программе 1С. Патчи представляют собой небольшие расширения конфигурации (.epd-файлы), которые оперативно исправляют ошибки и, что немаловажно, автоматически удаляются из системы при выходе нового релиза конфигурации, в котором данная ошибка уже устранена на уровне основной поставки. Такой подход обеспечивает максимальную актуальность и стабильность работы вашей системы.

  3. Верификация действия патча:

    После успешной установки патча EF_00_00673631 и обязательного перезапуска программы 1С, мы должны выполнить проверку, чтобы убедиться в устранении ошибки. Для этого откроем любой электронный документ, который ранее вызывал ошибку, перейдем на вкладку "ПОДПИСИ", найдем ФИО подписанта, нажмем правой кнопкой мыши и выберем пункт меню "Проверить электронные подписи". Если патч был применен корректно и решил проблему, ошибка "Сертификат не признан квалифицированным..." должна исчезнуть, и статус подписи должен отображаться как "Действительна".

  4. Дополнительные аспекты и возможные сложности при работе с патчами:

    Иногда пользователи сталкиваются с ситуацией, когда патч установлен, но проблема по-прежнему сохраняется. В подобных случаях нам необходимо провести более глубокую диагностику. Мы можем столкнуться с тем, что патч по какой-то причине неактивен или его код не выполняется. Патчи, подобно обычным расширениям конфигурации, могут требовать определенных условий для своей корректной работы, например, отключения безопасного режима, если они вносят глубокие изменения в базовые функции системы. Чтобы убедиться, что код из патча действительно выполняется, мы можем установить точку останова в измененной функции КлючЭлектроннойПодписиДействуетНаДату и в режиме отладки проследить, какой именно код срабатывает – из основной конфигурации или из установленного патча.

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

Решение 2: Ручное исправление кода через расширение конфигурации

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

Как мы уже выяснили, основная проблема заключается в некорректной обработке функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату в ситуациях, когда дата окончания действия закрытого ключа не заполнена в сертификате. Мы можем добавить в эту функцию дополнительную проверку, которая учтет такие сценарии.

  1. Создание или модификация расширения:

    Для начала нам потребуется открыть конфигуратор 1С:Предприятия. Если у вас еще нет подходящего расширения, мы создадим новое. Для этого в меню "Конфигурация" выберем "Расширения конфигурации" и нажмем "Добавить". Если расширение уже существует, мы можем использовать его.

    Внутрь нашего расширения нам необходимо добавить объект "Общий модуль" с именем КриптографияБЭДКлиентСервер. Для этого в дереве объектов расширения (в окне конфигурации расширения) найдем раздел "Общие" -> "Общие модули", нажмем правой кнопкой мыши и выберем "Добавить". Укажем точное имя модуля КриптографияБЭДКлиентСервер.

    Далее, в свойствах этого добавленного общего модуля в расширении, нам необходимо убедиться, что установлены флажки "Вызов сервера" и "Клиент (обычное приложение)" или "Клиент (управляемое приложение)", в зависимости от того, как вызывается функция. Это обеспечит доступность функций модуля.

    Теперь нам нужно получить доступ к исходному коду функции КлючЭлектроннойПодписиДействуетНаДату из основного модуля. Для этого в расширении найдем наш общий модуль КриптографияБЭДКлиентСервер, откроем его и добавим текст функции. Для возможности изменения этой функции через расширение, нам необходимо установить для нее директиву препроцессора &ИзменениеИКонтроль. Это явно указывает системе 1С, что данная функция в расширении переопределяет одноименную функцию в основной конфигурации.

    Изначальный вид функции в конфигурации может выглядеть примерно так:

    
    Функция КлючЭлектроннойПодписиДействуетНаДату(Сертификат, ДатаПроверки, Контекст) Экспорт
        ПериодКлюча = ПериодДействияКлючаЭлектроннойПодписи(Сертификат, Контекст);
        Возврат ЗначениеЛежитНаПромежутке(ДатаПроверки, Отрезок(ПериодКлюча.ДатаНачала, ПериодКлюча.ДатаОкончания));
    КонецФункции
    

    Мы должны скопировать этот код в наш модуль расширения и модифицировать его.

  2. Внесение корректировок в программный код:

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

    Модифицированный код функции, который мы разместим в нашем расширении, будет выглядеть следующим образом:

    
    &ИзменениеИКонтроль("КлючЭлектроннойПодписиДействуетНаДату")
    Функция ИспрКлючЭлектроннойПодписиДействуетНаДату(Сертификат, ДатаПроверки, Контекст) Экспорт
        ПериодКлюча = ПериодДействияКлючаЭлектроннойПодписи(Сертификат, Контекст);
        // #Вставка - Добавляем ключевую проверку на заполненность даты окончания действия ключа
        Если Не ЗначениеЗаполнено(ПериодКлюча.ДатаОкончания) Тогда
            // Если дата окончания не заполнена, считаем ключ действующим.
            // Это позволяет обойти проблему с сертификатами, где эта информация отсутствует
            // или неверно интерпретируется.
            Возврат Истина;
        КонецЕсли;
        // #КонецВставки
        // Если дата окончания заполнена, выполняем стандартную проверку
        Возврат ЗначениеЛежитНаПромежутке(ДатаПроверки, Отрезок(ПериодКлюча.ДатаНачала, ПериодКлюча.ДатаОкончания));
    КонецФункции
    

    После того как мы внесли эти изменения в код, нам необходимо сохранить расширение и обновить конфигурацию базы данных, чтобы изменения вступили в силу.

  3. Учет особенностей безопасного режима расширения:

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

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

  4. Трассировка и отладка для проверки:

    Если после применения расширения и отключения безопасного режима проблема все еще остается, мы рекомендуем выполнить трассировку и отладку. Откроем конфигуратор, установим точку останова прямо внутри измененной функции КлючЭлектроннойПодписиДействуетНаДату в нашем расширении. Затем в режиме "Предприятие" попробуем подписать документ. В результате мы должны увидеть, что выполнение программы останавливается на нашей точке останова, подтверждая, что выполняется именно код из нашего расширения, а не из основной конфигурации. Это поможет нам убедиться, что расширение успешно переопределило базовую функцию и наш код анализируется.

Комплексные рекомендации и дополнительные проверки

В дополнение к основным решениям, связанным с патчами или программным кодом, существует ряд дополнительных аспектов, которые мы должны обязательно проверить. Эти шаги помогут исключить другие возможные причины возникновения ошибки "Сертификат не признан квалифицированным на дату проверки" и обеспечить максимально стабильную работу ЭДО. При необходимости гибко управлять датами подписания документов во внутреннем документообороте этой конфигурации можно использовать обработку для установки произвольной даты подписи во внутреннем ЭДО БГУ 2.0.

  1. Актуальность модулей 1С-ЭДО: Мы должны убедиться, что в вашей системе установлены самые свежие версии модулей 1С-ЭДО. Фирма "1С" постоянно выпускает обновления для этих модулей, которые включают исправления ошибок, улучшения производительности и адаптацию к новым требованиям. Регулярное обновление обеспечивает корректное взаимодействие с Удостоверяющими Центрами и операторами ЭДО.
  2. Проверка срока действия самого сертификата: Первоочередная и самая простая проверка — это убедиться, что срок действия самого квалифицированного сертификата электронной подписи не истек. Мы можем сделать это непосредственно в программе 1С, перейдя в раздел "Администрирование" / "Обмен электронными документами" / "Настройки ЭДО" / "Сертификаты и настройки ЭЦП". Здесь отображается информация о всех установленных сертификатах, включая их период действия.
  3. Проверка на отзыв сертификата: Существует вероятность, что сертификат мог быть отозван Удостоверяющим Центром до истечения его номинального срока действия. Это может произойти по различным причинам, например, при компрометации ключа. Мы можем проверить статус сертификата через список отозванных сертификатов (CRL), который обычно публикуется на официальном сайте выдавшего Удостоверяющего Центра.
  4. Настройки криптопровайдера: На компьютере пользователя, осуществляющего подписание документов, должен быть установлен и корректно настроен только один криптопровайдер (например, ViPNet CSP или КриптоПро CSP), который соответствует тому, что использовался для выпуска данной электронной подписи. Конфликты между несколькими криптопровайдерами или некорректные настройки одного из них могут приводить к сбоям при работе с ЭЦП. Мы должны убедиться, что выбранный криптопровайдер корректно указан и настроен в программе 1С.
  5. Корректность даты и времени на компьютере: Кажущаяся мелочью, но крайне важная деталь — это правильность установки системной даты и времени на компьютере. Неправильно установленные дата и время могут привести к ошибкам при проверке срока действия сертификата, так как программы сверяют текущую дату с периодом действия ключа. Мы рекомендуем проверить синхронизацию времени с сервером точного времени.
  6. Доступ пользователя к сертификату: Если ошибка "Нет доступного сертификата для подписания документов" или подобная возникает у нового пользователя, или же у пользователя, который ранее не работал с данным сертификатом, мы должны проверить, назначен ли сертификат этому пользователю в настройках электронных подписей в 1С. Необходимо добавить соответствующий логин пользователя в список тех, кому разрешено использовать данный сертификат.
  7. Аккредитация Удостоверяющего Центра: Очень важно убедиться, что Удостоверяющий Центр, выдавший ваш сертификат, входит в список аккредитованных УЦ на официальном сайте Министерства цифрового развития, связи и массовых коммуникаций РФ (Минцифры). Сертификаты, выданные неаккредитованными УЦ, не признаются квалифицированными.
  8. Использование специального отчета по сертификатам: В новых версиях продуктов 1С (например, 1С:Бухгалтерия начиная с релиза 3.0.156) доступен удобный инструмент – отчет "Сертификаты электронной подписи". Этот отчет, который можно найти в разделе "Администрирование" -> "Сертификаты и настройки ЭЦП", предоставляет детальную информацию о всех установленных КЭП и помогает быстро проверить их актуальность, статус и другие параметры. Мы можем использовать этот отчет для оперативной диагностики состояния ваших сертификатов.
  9. Особенности взаимодействия с оператором "Такском": Если вы используете оператора ЭДО "Такском" и работаете с новым сертификатом, выданным Федеральной налоговой службой (ФНС), но при этом сталкиваетесь с ошибками аутентификации или подписания, может потребоваться дополнительный шаг. В некоторых случаях система "Такском" требует ручного добавления информации о новом сертификате в их внутреннюю базу данных. В такой ситуации мы рекомендуем обратиться в службу поддержки "Такском" для уточнения процедуры и получения необходимой помощи.

Заключение

Как мы подробно рассмотрели, ошибка "Сертификат не признан квалифицированным на дату проверки" в программах 1С при работе с ЭДО является достаточно распространенной и часто возникает после обновления конфигураций, особенно с учетом ужесточения требований к квалифицированным электронным подписям. Мы выяснили, что наиболее надежными и эффективными решениями являются либо установка официального патча EF_00_00673631, либо, как альтернативный и более контролируемый метод, применение программного исправления через механизм расширения конфигурации с модификацией функции КриптографияБЭДКлиентСервер.КлючЭлектроннойПодписиДействуетНаДату. Мы настоятельно рекомендуем всегда проверять все сопутствующие факторы, такие как срок действия самого сертификата, его статус отзыва, правильность настроек криптопровайдера, корректность системной даты и времени, а также доступность сертификата для конкретного пользователя. Следуя предложенным в этой статье рекомендациям и шагам, мы сможем эффективно устранить данную проблему и восстановить бесперебойный и надежный электронный документооборот в вашей программе 1С, обеспечивая соответствие всем законодательным требованиям.

← На главную