Как программно сформировать и отправить электронные документы с электронной подписью на сервере 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Обзор решения: Программное подписание и отправка ЭД на сервере 1С

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

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

Технические аспекты и настройка серверного окружения

Для того чтобы программное формирование и отправка ЭД с ЭЦП на сервере 1С стали возможными, нам необходимо выполнить ряд технических настроек и установить соответствующее программное обеспечение. Рассмотрим каждый шаг более детально.

  1. Установка криптопровайдера на сервере:

    Критически важно, чтобы на сервере 1С, где предполагается выполнять подписание документов, был установлен соответствующий криптопровайдер. Примеры таких программ включают КриптоПро CSP или ViPNet CSP. Эти программы обеспечивают криптографические операции, необходимые для создания и проверки электронной подписи. Важно обратить внимание на то, что установка и последующая настройка криптопровайдера должны производиться от имени того пользователя операционной системы, под которым запускается служба "Агент сервера 1С:Предприятия". Это обеспечит корректный доступ сервера 1С к функциям криптопровайдера и установленным сертификатам.

  2. Установка сертификатов секретных ключей на сервере:

    После установки криптопровайдера, следующим шагом является установка секретных ключей пользователей, чьими подписями будут заверяться электронные документы. Эти ключи, вместе с соответствующими сертификатами, должны быть доступны на сервере 1С. В программах "1С:Предприятие" стандартно поддерживается работа с отсоединенной электронной подписью в формате PKCS#7. Это означает, что подпись формируется отдельно от самого документа и может быть передана вместе с ним или храниться раздельно. Убедитесь, что все необходимые сертификаты установлены в системное хранилище Windows (или аналогичное хранилище для Linux-серверов) и доступны для использования криптопровайдером.

  3. Настройки в 1С:Предприятии для работы с ЭЦП на сервере:

    Перейдем к настройкам самой конфигурации 1С. Мы будем использовать типовые механизмы, которые предоставляет "1С:Библиотека стандартных подсистем" (БСП). Для этого нам необходимо выполнить следующие действия:

    1. Откройте раздел "Администрирование", затем перейдите в "Общие настройки" и найдите пункт "Электронная подпись и шифрование".

    2. Установите флажок "Электронная подпись". Это активирует общие возможности работы с ЭП в вашей конфигурации.

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

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

    5. В тех же настройках "Электронной подписи и шифрования", нам нужно будет добавить и настроить программы криптографии (криптопровайдеры). Здесь мы указываем, какой именно криптопровайдер используется на сервере и его основные параметры. Система 1С, взаимодействуя с БСП, будет использовать эти настройки для обращения к криптопровайдеру.

  4. Использование БСП для программной работы с ЭП:

    Подсистема "Электронная подпись", входящая в состав "1С:Библиотеки стандартных подсистем" (БСП), предоставляет мощный и удобный инструментарий для работы с ЭЦП. Именно эти механизмы мы и будем использовать для программного формирования и отправки документов. БСП содержит готовые объекты и методы для:

    • Выбора сертификатов (если их несколько).

    • Создания отпечатков подписей.

    • Непосредственного подписания данных.

    • Проверки подписей.

    Примерный алгоритм программного подписания документа может выглядеть следующим образом:

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

    2. Вызов функций БСП для выбора сертификата, установленного на сервере. Часто это делается по отпечатку сертификата или по его идентификатору.

    3. Использование метода для создания отсоединенной подписи для полученных данных с помощью выбранного сертификата.

    4. Примерный код, если бы он был непосредственно в БСП, мог бы включать вызовы методов объектов, например, УправлениеЭДО.ПодписатьДанныеНаСервере() или аналогичных, которые инкапсулируют взаимодействие с криптопровайдером.

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

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

  5. Получение сертификата:

    Сертификат ключа электронной подписи можно получить в аккредитованных удостоверяющих центрах. Например, фирма "1С" имеет собственный Удостоверяющий центр. Важно помнить, что с 1 января 2022 года руководители компаний получают электронные подписи исключительно в УЦ ФНС России или в аккредитованных УЦ, которым ФНС доверила выдачу таких подписей. Удостоверяющие центры предоставляют не только сам сертификат, но и необходимый ключевой носитель.

Организационные вопросы и вопросы безопасности

Перенос процесса подписания ЭД на сервер, несмотря на все технические преимущества, сопряжен с серьезными организационными вопросами и повышенными требованиями к безопасности. Мы, как ответственные специалисты, должны осознавать все риски и предпринять необходимые меры для их минимизации. Для организационного контроля и ведения реестра сертификатов можно использовать решение для учета ЭЦП, МЧД и выданных токенов.

  1. Осознание рисков:

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

  2. Определение ответственных лиц:

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

  3. Контроль доступа к помещениям и серверу:

    Мы должны исключить бесконтрольный допуск посторонних лиц в помещения, где расположены средства ЭП и сервер. Не оставляйте сервер без контроля при включенном питании, особенно если ключевые носители (например, токены) подключены к нему. Физическая безопасность — это первый и очень важный уровень защиты.

  4. Использование лицензионного программного обеспечения и регулярные обновления:

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

  5. Разработка и применение политики паролей:

    Мы обязаны разработать и неукоснительно соблюдать строгую политику назначения и смены паролей. Это касается не только входа в операционную систему сервера, но и доступа к BIOS, а также к самим ключам ЭП, если они защищены паролями или PIN-кодами. Пароли должны быть сложными, регулярно меняться и не использоваться повторно.

  6. Защита ключевой информации:

    Утвердите порядок учета, хранения и использования носителей ключевой информации (флешки, токены, смарт-карты), который исключает несанкционированный доступ к ним. Запретите пересылать файлы с ключевой информацией по незащищенным каналам связи, таким как электронная почта или мессенджеры. Ключи ЭП – это критически важная информация.

  7. Особенности работы в облачных решениях:

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

  8. Неэкспортируемые ключи:

    Имейте в виду, что руководители компаний часто получают неэкспортируемые электронные подписи. Это означает, что секретный ключ нельзя скопировать с ключевого носителя, что значительно повышает безопасность. В таком случае, ключевой носитель должен быть физически подключен к серверу 1С для выполнения операций подписания, или использоваться специальные программные и аппаратные решения для удаленной работы с неэкспортируемым ключом (например, через виртуализацию рабочего места или аппаратные модули безопасности).

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

← На главную