Автоматическое подписание обезличенным сертификатом
В этой статье мы рассмотрим, что такое обезличенная электронная подпись, как она регулируется законодательством и каким образом можно автоматизировать процессы подписания с помощью таких инструментов, как КриптоАРМ Server (КриптоАРМ SDK). Проверку таких подписей мы описали в статье
«Автоматизация проверки электронной подписи с использованием КриптоАРМ Server», а пакетное подписание PDF — в материале на Хабре: «Как реализовать пакетную подпись PDF-документов».
Что такое обезличенная электронная подпись и где получить сертификат
Обезличенная электронная подпись представляет собой подпись, использующую сертификат без указания персональных данных владельца, и предназначена для юридических лиц и индивидуальных предпринимателей (в сертификате для ИП все же указываются данные владельца). Она выполняет функцию, схожую с печатью организации, что позволяет автоматизировать процессы подписания в информационных системах. Сертификат, используемый для такой подписи, не закрепляется за конкретным сотрудником.
Федеральная налоговая служба России выпускает обезличенные сертификаты, которые применяются для автоматического создания и проверки электронной подписи в электронных документах.
Центробанк предоставляет квалифицированные обезличенные сертификаты для участников, ведущих деятельность в соответствии с ч. 1 статьи 76.1 Закона о Центральном банке.
Федеральное казначейство обеспечивает выпуск обезличенных сертификатов для нужд органов власти.
Применение обезличенной электронной подписи согласно Федеральному закону № 63-ФЗ «Об электронной подписи»
Область применения обезличенной подписи ограничена: её нельзя использовать в документах, которые направляются вне информационных систем или для участия в государственных закупках. Применение обезличенной электронной подписи разрешено в автоматизированных информационных системах — как государственных (например СМЭВ), так и частных, если это предусмотрено федеральным законодательством.
В соответствии с Законом № 63-ФЗ «Об электронной подписи» такие подписи предназначены для автоматической подписи и проверки электронных документов в системах, где не требуется участие человека. В этом случае назначается ответственное лицо за процесс создания и проверки подписи, а при его отсутствии ответственность возлагается на руководителя организации.
Преимущества автоматического подписания с использованием обезличенного сертификата
Обезличенная электронная подпись позволяет компаниям значительно улучшить процессы обработки документов:
- Ускорение процессов. Подпись создается автоматически, что исключает задержки, связанные с ручным подписанием.
- Исключение человеческого фактора. Автоматизация снижает риск ошибок, которые могут возникнуть при ручной работе.
- Соответствие законодательству. Использование в автоматических системах соответствует всем законодательным требованиям.
- Легкость интеграции. Обезличенная подпись интегрируется в информационные системы, а КриптоАРМ SDK содержит все необходимые методы для реализации.
Автоматическое подписание с использованием КриптоАРМ Server
Для интеграции обезличенной электронной подписи можно использовать КриптоАРМ Server и модуль trusted-crypto. С помощью этого модуля можно реализовать автоматическое создание и проверку подписей в информационных системах. Рассмотрим несколько этапов работы с электронными подписями.
Пример кода для автоматического подписания
- Чтение обезличенного сертификата
Загрузка файла сертификата осуществляется с помощью метода
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.
- Подпись данных или файла
Подпись выполняется методом
sign
. После подписания данные можно экспортировать в буфер или записать в файл.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
.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); })
- Добавление подписи (соподпись)
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);
- Усовершенствованная подпись
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.