Автоматическое подписание обезличенным сертификатом - API КриптоАРМ
Перейти к содержанию

Автоматическое подписание обезличенным сертификатом

В этой статье мы рассмотрим, что такое обезличенная электронная подпись, как она регулируется законодательством и каким образом можно автоматизировать процессы подписания с помощью таких инструментов, как КриптоАРМ Сервер (КриптоАРМ SDK).

Процесс автоматической проверки подписи описан в нашей статье «Автоматизация проверки электронной подписи с использованием КриптоАРМ Сервер».

Что такое обезличенная электронная подпись и где получить сертификат

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

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

Центробанк предоставляет квалифицированные обезличенные сертификаты для участников, ведущих деятельность в соответствии с ч. 1 статьи 76.1 Закона о Центральном банке.

Федеральное казначейство обеспечивает выпуск обезличенных сертификатов для нужд органов власти.

Применение обезличенной электронной подписи согласно Федеральному закону № 63-ФЗ «Об электронной подписи»

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

В соответствии с Законом № 63-ФЗ «Об электронной подписи» такие подписи предназначены для автоматической подписи и проверки электронных документов в системах, где не требуется участие человека. В этом случае назначается ответственное лицо за процесс создания и проверки подписи, а при его отсутствии ответственность возлагается на руководителя организации.

Преимущества автоматического подписания с использованием обезличенного сертификата

Обезличенная электронная подпись позволяет компаниям значительно улучшить процессы обработки документов:

  1. Ускорение процессов. Подпись создается автоматически, что исключает задержки, связанные с ручным подписанием.
  2. Исключение человеческого фактора. Автоматизация снижает риск ошибок, которые могут возникнуть при ручной работе.
  3. Соответствие законодательству. Использование в автоматических системах соответствует всем законодательным требованиям.
  4. Легкость интеграции. Обезличенная подпись интегрируется в информационные системы, а КриптоАРМ SDK содержит все необходимые методы для реализации.

Автоматическое подписание с использованием КриптоАРМ Сервер

Для интеграции обезличенной электронной подписи можно использовать КриптоАРМ Сервер и модуль trusted-crypto. С помощью этого модуля можно реализовать автоматическое создание и проверку подписей в информационных системах.

Рассмотрим несколько этапов работы с электронными подписями.

Пример кода для автоматического подписания

1. Чтение обезличенного сертификата

Загрузка файла сертификата осуществляется с помощью метода load или асинхронного loadAsync.

const certFile = "mycertificate.cer";
const cert = trusted.pki.Certificate.load(DEFAULT_RESOURCES_PATH + "/" + certFile, trusted.DataFormat.DER);
Этот метод загружает сертификат, который может быть закодирован в формате DER или BASE64. Сертификат должен быть установлен в хранилище сертификатов с привязкой к закрытому ключу, в момент подписи trusted-crypto получит контекст ключа. Альтернативный вариант работы с сертификатами — работа с классом хранилища trusted.pkistore.PkiStore.

2. Подпись данных или файла

Подпись выполняется методом sign. После подписания данные можно экспортировать в буфер или записать в файл.

```javascript var signer; var policies;

sd = new trusted.cms.SignedData();

sd.policies = ["detached"];

  sd.content = {
        type: trusted.cms.SignedDataContentType.buffer,
        data: "Hello world"
  };

sd.sign(cert);

sd.export();

Для асинхронной подписи можно использовать метод `signAsync`.

```javascript
function (done) {
                 cms = new trusted.cms.SignedData();

                 cms.policies = isDetached ? ["detached"] : [];

                 cms.content = {
                     type: trusted.cms.SignedDataContentType.url,
                     data: DEFAULT_RESOURCES_PATH + "/" + plainFile
                 };
                 cms.signAsync(cert, done);
             })

3. Добавление подписи (соподпись)

 const csd = new trusted.cms.SignedData();

 csd.import(signBuffer)

 const cert = trusted.pki.Certificate.load(DEFAULT_RESOURCES_PATH + "/cert-with-pin.cer", trusted.DataFormat.DER);

csd.sign(cert);

4. Усовершенствованная подпись

var sdCades;
            var connSettings = new trusted.utils.ConnectionSettings();
            connSettings.Address = TSP_SERVICE_ADDRESS;

            sdCades = new trusted.cms.SignedData();

            sdCades.content = {
                type: trusted.cms.SignedDataContentType.buffer,
                data: "CAdES-" + cadesType + " test 1",
            };

            var cadesParams = new trusted.cms.CadesParams();
            cadesParams.cadesType = cadesTypeByName(
                cadesType,
                "Unknown type " + cadesType
            );
            cadesParams.connSettings = connSettings;
            cadesParams.tspHashAlg = "1.2.643.7.1.1.2.2";
            sdCades.signParams = cadesParams;

            assert.doesNotThrow(function () {
                sdCades.sign(cert);
            });

            assert.notStrictEqual(
                sdCades.export(),
                undefined,
                "Unable to export CAdES"
            );
            sdCades.save(
                DEFAULT_OUT_PATH + "/" + signCades1,
                trusted.DataFormat.PEM
            );

Для более подробного ознакомления с функционалом модуля trusted-crypto можно обратиться к нашей документации, доступной по ссылке.

Заключение

Использование обезличенной электронной подписи позволяет ускорить обработку данных, снизить затраты на администрирование и обеспечить соответствие требованиям законодательства. Использование КриптоАРМ Сервер предоставляет организациям инструменты для автоматизации подписания и проверки данных.

По вопросам реализации сервиса автоматического подписания обращайтесь на наш email sales@cryptoarm.ru.