Проверка подписи XML-документа сводится к трём операциям: пересчитать хеш подписанных данных, сверить его со значением внутри элемента ds:Signature и подтвердить, что сертификат подписанта был действителен на момент подписания. Звучит просто, но XML живёт по своим правилам — лишний пробел или перенос строки ломает результат, а сама подпись может лежать внутри документа, оборачивать его или храниться отдельным файлом. Из статьи вы поймёте, какие форматы XML-подписи встречаются на практике, чем проверка XML отличается от PDF, какими инструментами это делается и что считать валидной подписью. Это часть большого материала про проверку электронной подписи, где разобраны все типы подписей и сценарии верификации.
Автор статьи — Мария Ж, юрист со стажем более 20 лет, соучредитель сервиса КЭДО Добыто, спикер на конференциях по КЭДО и юриспруденции, судебный эксперт в сфере корпоративного и трудового права. Занимается наймом персонала более 13 лет. Автор более 1000 статей о цифровой подписи, трудовом праве, КЭДО и HR.
Что такое XML-подпись и где она применяется
XML-подпись — это электронная подпись, наложенная на XML-документ по стандарту W3C XML Signature (его сокращают до XMLDSig). От подписи под PDF или Word она отличается тем, что подписывается не файл целиком как набор байтов, а логическая структура документа: конкретные узлы дерева, на которые ссылается элемент ds:Reference. Подпись и сама оформляется как XML — блок ds:Signature с пространством имён http://www.w3.org/2000/09/xmldsig#.
Где это встречается. Отчётность в ПФР (теперь СФР), та же СЗВ-ТД, заявления на подключение к ЭДО — всё это подписывается в формате xmlDsig по правилам СМЭВ 3. Запросы и ответы веб-сервисов в системе межведомственного электронного взаимодействия. Машиночитаемые доверенности — МЧД формируются и хранятся именно как XML, и подпись там тоже XML. Декларации в ФГИС, обмен с госсистемами. По сути любой машинный документооборот, где данные структурированы, а не свёрстаны в картинку.
Важный нюанс. В российском контуре XML подписывается по ГОСТ — алгоритмы подписи ГОСТ Р 34.10-2012 и хеширования ГОСТ Р 34.11-2012. В шаблоне подписи это видно по идентификаторам методов: SignatureMethod и DigestMethod ссылаются на gostr3410 и gostr3411. Иностранная криптография (RSA-SHA) в XML тоже существует, но для юридически значимого обмена внутри РФ нужны именно отечественные стандарты.
Мария Ж, специалист по цифровой подписи и КЭДО:
«Народ путает: думают, раз подписали XML, то это какая-то особая ЭЦП. Нет. Подпись та же самая, та же закрытка, тот же серт. Просто упаковка другая — не «флешка ткнул, плашечку получил», а структура внутри документа. И вот эта структура чувствительна к каждому символу.»
Форматы XML-подписи: enveloped, enveloping, detached
Прежде чем проверять, надо понять, как подпись связана с документом. У XML три способа, и от выбранного зависит, какие файлы вы загружаете в проверочный сервис.
Enveloped (вложенная). Блок ds:Signature лежит внутри подписываемого XML, как один из его узлов. Ссылка в ds:Reference идёт на весь документ — URI пустой, URI="", — за исключением самого блока подписи. Так подписывают СЗВ-ТД и большинство отчётов: один файл, в нём и данные, и подпись.
Enveloping (оборачивающая). Здесь наоборот — подпись снаружи, а подписываемые данные вложены внутрь блока ds:Signature как элемент ds:Object. Ссылка идёт на идентификатор этого объекта, URI="#id". Применяется реже, обычно когда подписывают не XML, а упакованные в него данные.
Detached (отсоединённая). Подпись хранится отдельным файлом, рядом с исходным документом. Ссылка указывает на внешний файл. Это XML-аналог привычной откреплённой подписи в формате SIG — тот случай, когда у вас на руках исходник и отдельно файл подписи. Кстати, отсоединённой подписью можно подписать вообще что угодно, не только XML.
Зачем это знать проверяющему. При detached в сервис проверки нужно загрузить два файла — документ и подпись. При enveloped и enveloping достаточно одного. Загрузите не то, и сервис честно скажет, что подпись не найдена либо данные не совпадают. Половина обращений с жалобой «подпись не проверяется» — это именно про то, что человек скормил один файл, а подпись была откреплённой.
XAdES — усовершенствованная XML-подпись
Базовый XMLDSig фиксирует только факт подписания и целостность. Но для долгого хранения и для суда этого мало: сертификат через год-другой истечёт, и доказать, что на момент подписания он был действителен, станет нечем. Для этого придумали XAdES — XML Advanced Electronic Signatures, надстройку над XMLDSig с дополнительными доказательствами.
Уровни идут по нарастающей, и проверять каждый следующий чуть сложнее предыдущего:
- XAdES-BES — базовая усовершенствованная. В подпись добавлен сам сертификат подписанта и подписанные свойства (
SignedProperties). Уже самодостаточна для проверки авторства. - XAdES-T — добавлена метка времени (штамп времени, TSP). Фиксирует момент, когда подпись точно существовала. Метку выдаёт служба штампов времени, в российском контуре — КриптоПро TSP.
- XAdES-X Long (XL) — добавлены ответ службы OCSP о статусе сертификата на момент подписи и полная цепочка сертификатов. Можно проверить подпись даже после отзыва сертификата.
- XAdES-A — архивная. Поверх предыдущих доказательств кладётся архивная метка, которая заверяет их все разом. Для архивов с длительным хранением.
Логика та же, что у CAdES для CMS-подписей, просто синтаксис XML. На вебинарах это называют «ухаживанием за подписью» — периодически документ переподписывают новой меткой, чтобы юридическая значимость не выцвела со временем. По законодательству схема с TSP и службой актуальных статусов даёт срок проверки до 18 лет: три года срока действия закрытого ключа плюс 15 лет действия сертификата службы штампов. Для кадровых документов, которые хранятся 50 лет, этого мало — там нужна архивная метка и периодическое переподписание.
Мария Ж, судебный эксперт по трудовому праву:
«Когда документ всплывает в суде через пять лет, а сертификат давно протух, спасает только усовершенствованная подпись. Если там голый BES без штампа времени — доказывай потом, что подписали именно тогда, а не задним числом. Поэтому всё, что идёт в долгий архив, мы изначально кладём минимум в XL, а лучше в A.»
Как работает проверка XML-подписи: что происходит под капотом
Чтобы понимать отчёты проверочных сервисов, полезно знать механику. Проверка XML распадается на несколько шагов, и провал на любом из них даёт статус «подпись не валидна».
Шаг первый — канонизация (C14N). Вот тут главная засада XML. Один и тот же документ можно записать по-разному: с разными пробелами, переносами, порядком атрибутов, кодировкой. Для машины это разные байты, а значит разный хеш. Чтобы подпись была устойчивой, перед хешированием XML приводят к каноническому виду по алгоритму Canonicalization (обычно exclusive C14N). Метод канонизации записан прямо в подписи, в элементе CanonicalizationMethod. При проверке сервис обязан применить ровно тот же алгоритм, иначе хеши не сойдутся.
Шаг второй — пересчёт хеша. Для каждого ds:Reference проверяющая сторона берёт подписанные данные, прогоняет их через канонизацию и трансформации (например, enveloped-signature transform, который выкидывает сам блок подписи), считает хеш по ГОСТ Р 34.11 и сравнивает с DigestValue внутри подписи. Не совпало — документ изменили после подписания.
Шаг третий — проверка самой подписи. Берётся открытый ключ из сертификата, и им проверяется значение SignatureValue относительно канонизированного SignedInfo. Это подтверждает, что подпись сделана владельцем закрытого ключа.
Шаг четвёртый — проверка сертификата. Сертификат подписанта проверяется на срок действия, на отзыв (по списку отозванных сертификатов или через OCSP) и на доверие к удостоверяющему центру, который его выпустил. Для УКЭП — что УЦ аккредитован.
Только когда все четыре шага прошли, подпись считается валидной. В отчётах это обычно показывают раздельно: целостность — ОК, подпись математически верна, сертификат действителен, цепочка доверия выстроена.

Результат проверки подписи в КриптоПро: видно статус подписи, данные сертификата и срок его действия.
Инструменты для проверки XML-подписи
Способов несколько, и выбор зависит от того, кто проверяет и насколько глубокий отчёт нужен. Бухгалтеру с одним документом хватит браузера, а финансовой организации с потоком в тысячи файлов в день нужна автоматизация.
Сервис проверки на Госуслугах
Самый доступный путь для разовой задачи. На странице проверки ЭП портала Госуслуг загружаете документ и, если подпись откреплённая, файл подписи. Сервис покажет статус, данные владельца сертификата, срок действия. Для квалифицированной подписи работает отдельный раздел на e-trust.gosuslugi.ru. Минус — базовый отчёт без тонкостей вроде уровня XAdES и состава меток. Официальную инструкцию по проверке можно посмотреть на портале Госуслуг в разделе проверки электронной подписи.
Портал СМЭВ для XMLDSig-сообщений
Специфический, но незаменимый инструмент, если вы работаете с межведомственным взаимодействием. Сервис проверки подписи СМЭВ проверяет электронную подпись XML-сообщения (xml soap) в формате XMLDSig — как подпись информационной системы (ЭП-ОВ), так и подпись СМЭВ (ЭП-СМЭВ). Можно проверить и запрос к веб-сервису, и его ответ. Там же есть форматно-логический контроль — проверка соответствия сообщения методическим рекомендациям. Для разработчиков и интеграторов это рабочая лошадка.
КриптоПро DSS и КриптоПро CSP
КриптоПро DSS — онлайн-сервис, который проверяет подписи форматов CMS, PDF и XML. КриптоПро CSP — криптопровайдер, который умеет проверять в том числе откреплённые подписи на рабочем месте. Это профессиональный инструмент, требует установки и лицензии, зато даёт полную картину: формат, метки времени, OCSP-ответы, цепочку.
КриптоАРМ и КриптоАРМ Server
КриптоАРМ — настольная программа для подписания, шифрования и проверки. Свежие версии поддерживают усовершенствованную подпись XAdES X Long Type 1 и архивную, проверку статусов МЧД. Кстати, про МЧД интересный момент: доверенность хранится в XML, а КриптоАРМ при проверке преобразует её в читабельный PDF — показывает полномочия, срок действия, текущий статус. Сырой XML глазами читать невозможно, а тут наглядно.
Для потока документов есть КриптоАРМ Server — это on-premise решение, ставится на сервере в контуре организации, набор из SDK КриптоАРМ плюс сервис подписи. Предназначен для автоматической проверки подписи, формирования и усовершенствования подписи, шифрования. Запросы от финансовых организаций на 80% касаются именно подписи — проверка либо улучшение. Результаты проверки сервер складывает в базу и формирует протоколы проверки в формате PDF. Обрабатывает разные виды: совмещённую подпись, отделённую, подписи с дополнительными доказательствами — штампами времени, OCSP-ответами.
Мария Ж, соучредитель сервиса КЭДО Добыто:
«Если у вас десяток документов в месяц — не городите серверный огород, хватит браузерного сервиса. А вот когда поток идёт пачками, и каждую надо проверить, протокол сохранить, в архив сложить — тут уже без автоматизации никак, руками сотрудники просто утонут. Мы для таких задач смотрим именно на серверные сценарии с автозакрытием и выгрузкой протоколов.»
Сервис Добыто Подпись
В сервисе Добыто проверка работает прямо в браузере, без установки криптопровайдера. Поддерживаются оба типа подписи — откреплённая и присоединённая, принимаются PDF, DOC, DOCX, XLS и больше сотни форматов. Для присоединённой подписи нужен один файл, для откреплённой — документ и файл подписи. Файлы не сохраняются на сервере. Сервис проверяет целостность подписи и показывает сведения о сертификате: владельца, ИНН, дату подписания, срок действия. С 1 марта 2026 года добавился визуальный штамп подписи в PDF.
Проверка электронной подписи онлайн — сервис Добыто
Проверка электронной подписи
Загрузите файл подписи или пару файлов для открепленной подписи.
Сервис проверит целостность подписи и покажет сведения о сертификате.
1 Выберите тип подписи:
Для присоединенной подписи нужен один файл. Для открепленной проверки требуются документ и файл подписи.
2 Загрузите документ и подпись:
Документ
Файл подписи
Образцы документов для работы с электронной подписью и ЭДО
Открыть список документов
| Документ | Скачать |
|---|---|
| Инструкция по установке ЭЦП на компьютер | Скачать |
| Ответы на вопросы об установке ЭЦП | Скачать |
| Памятка по настройке КЭП для налоговой | Скачать |
| Криптографическая защита информации: формирование и проверка подписи | Скачать |
| Руководство пользователя Добыто КЭДО | Скачать |
| Методические рекомендации по внедрению ЭДО | Скачать |
| Шаблон соглашения по ЭДО | Скачать |
| Приказ о введении КЭДО | Скачать |
| Приказ о КЭДО | Скачать |
| Примерная форма трудового договора | Скачать |
Чем проверка XML отличается от проверки PDF и Word
Кадровики и бухгалтеры привыкли к PDF: открыл, увидел плашечку с подписью, успокоился. С XML так не выйдет, и в этом главная трудность.
Во-первых, XML нечитаем человеком напрямую. Это структурированные данные для машины, а не документ для глаз. Отсюда практика визуализации: при отсоединённой подписи у того, кто просто открывает исходный документ, нет ощущения, что он подписан. Поэтому формируют точную копию документа и добавляют в неё штамп визуализации — целостность оригинала не трогают, а копию со штампиком можно посмотреть или распечатать. С МЧД ровно так же: XML преобразуют в наглядный PDF.
Во-вторых, чувствительность к форматированию. PDF подписывается как поток байтов, и пока байты не тронули — подпись жива. XML же канонизируется, и хотя канонизация защищает от части различий, ручное вмешательство в подписанный XML почти гарантированно ломает подпись. Правило простое: после подписания XML не трогать — ни пробелов, ни переносов, ни перекодировки.
В-третьих, выбор узлов. В PDF подписывается весь документ. В XML можно подписать часть — конкретный узел по идентификатору или даже фрагмент через XPath-выражение. Проверяющему важно понимать, что именно покрыто подписью, а что нет, — подписанным может оказаться не весь документ.

Свойства сертификата: ФИО владельца, ИНН, срок действия и удостоверяющий центр — эти данные сервис извлекает при проверке подписи.
Канонизация и трансформации — то место, где даже опытные интеграторы ломают зубы. Подпись формально верная, а проверка падает, потому что на одной стороне применили один алгоритм C14N, а на другой — другой. Разбирать такие расхождения вручную, сверяя SignedInfo побайтово, — удовольствие сомнительное.
В практике Добыто мы настраиваем проверку так, чтобы система сама определяла формат подписи и применяла нужный алгоритм канонизации, а пользователь видел понятный результат, а не сырой XML с ошибкой.
Частые ошибки при проверке XML-подписи
Разберу те, что встречаются чаще всего, и во что они обходятся.
Ошибка первая — загрузка не тех файлов. При отсоединённой подписи человек грузит только документ или только подпись. Делают так по незнанию: привыкли, что в PDF всё в одном файле. Цена ошибки — время на повторные попытки и ложный вывод, что подпись битая. На самом деле просто не хватает второго файла.
Загружаете не то — сервис вернёт ошибку, а вы решите, что документ поддельный. Перед тем как делать выводы, проверьте, открепленная подпись или вложенная. Для откреплённой проверки нужны и документ, и файл подписи — подробно про то, как такой файл с откреплённой УКЭП создать и проверить, есть отдельный разбор.
Ошибка вторая — ручная правка подписанного XML. Открыли в блокноте, поправили опечатку, пересохранили. Делают, чтобы быстро исправить мелочь. Цена — подпись слетает полностью, документ приходится переподписывать, а если это отчёт с дедлайном, добавьте сюда риск просрочки.
Ошибка третья — игнор уровня XAdES при архивном хранении. Подписали голым BES и положили в архив на годы. Мотив — так проще и без штампов времени. Цена вылезает потом: сертификат истёк, доказать момент подписания нечем, в споре документ повисает. Для долгого хранения сразу берите XAdES-T минимум, а для кадровых и финансовых — XL или A.
Ошибка четвёртая — проверка несертифицированным софтом для юридически значимого документа. Для проверки квалифицированной подписи нужны сертифицированные средства. Иностранные онлайн-валидаторы XML не понимают ГОСТ и выдадут «подпись неизвестна», хотя с ней всё в порядке.
Как проверить XML-подпись: пошаговая инструкция
Показать пошаговую инструкцию
- Шаг 1. Определите тип подписи. Откройте XML и посмотрите, где блок
ds:Signature— внутри документа (enveloped/enveloping) или подпись лежит отдельным файлом (detached, откреплённая). - Шаг 2. Выберите инструмент. Для разовой задачи — сервис Госуслуг или Добыто Подпись, для СМЭВ-сообщений — портал проверки СМЭВ, для потока документов — КриптоАРМ Server.
- Шаг 3. Загрузите файлы. Для вложенной подписи — один XML. Для откреплённой — и документ, и файл подписи (можно zip-архивом).
- Шаг 4. Запустите проверку и дождитесь отчёта. Сервис пересчитает хеш, проверит подпись и сертификат.
- Шаг 5. Прочитайте результат: целостность документа, валидность подписи, данные владельца, срок действия сертификата, статус на момент подписания, наличие меток времени.
Стоимость проверки и работы с электронной подписью в КЭДО
Отдельной платы за саму проверку XML-подписи в массовых сервисах нет — на Госуслугах и в Добыто это бесплатно. Деньги возникают, когда проверка и подписание становятся частью кадрового документооборота: тогда платят за сервис КЭДО, который умеет и подписывать, и проверять, и хранить с метками времени. Итоговая сумма зависит от численности штата, выбранного тарифа, видов подписи и набора модулей.
| Тариф | Стоимость | Условия |
|---|---|---|
| Старт — для небольших компаний, начинающих переход на КЭДО | от 30 ₽ за сотрудника / мес | До 25 сотрудников, ПЭП и УНЭП, базовые шаблоны, email-поддержка |
| Бизнес — для среднего бизнеса с полным набором функций | от 50 ₽ за сотрудника / мес | Неограниченно сотрудников, ПЭП, УНЭП и УКЭП, интеграция с 1С, электронный архив |
| Корпорация — для крупного бизнеса с расширенными требованиями и SLA | По запросу | Всё из тарифа Бизнес, выделенный сервер, SLA 99.9%, API и кастомные интеграции |
Тариф Бизнес считается от 50 ₽ за сотрудника в месяц при минимальной оплате 50 сотрудников за 30 000 ₽ в год. На итоговую сумму влияют численность, нужные виды подписи и состав модулей — электронный архив, интеграция с учётной системой, метки времени для долгого хранения. Актуальные тарифы сервиса Добыто помогут сориентироваться под вашу численность точнее.
Выводы: проверка подписи XML-документа
Проверка XML-подписи строится на тех же принципах, что и любая проверка ЭП: целостность данных, математическая верность подписи, действительность сертификата на момент подписания и доверие к удостоверяющему центру. Специфика XML в том, что подпись бывает вложенной, оборачивающей и отсоединённой, а перед хешированием документ канонизируется по алгоритму C14N — и от этого результат зависит до символа. В российском контуре XML подписывается по ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, поэтому проверять квалифицированную подпись нужно средствами, понимающими отечественную криптографию.
На практике определите тип подписи до загрузки в сервис: для откреплённой нужны два файла, для вложенной — один. Не правьте подписанный XML руками — это гарантированно ломает подпись. Для долгого хранения сразу выбирайте усовершенствованную подпись с меткой времени, а лучше XAdES-X Long или архивную, иначе после истечения сертификата доказать момент подписания будет нечем. Инструменты подбирайте под объём: для разовой задачи хватит сервиса Госуслуг, для СМЭВ-сообщений есть портальный валидатор XMLDSig, для потока — серверные решения с автоматической проверкой и выгрузкой протоколов.
Машинный документооборот растёт, и доля XML-подписей вместе с ним: отчётность, МЧД, межведомственный обмен переходят на структурированные форматы. Тем, кто работает с кадровыми и финансовыми документами, стоит заранее закладывать инфраструктуру проверки и долговременного хранения, чтобы значимость подписи держалась весь срок хранения, а не только пока действует сертификат.
Часто задаваемые вопросы
Чем XMLDSig отличается от XAdES?
Почему подпись валидная, а проверка показывает ошибку?
Какими алгоритмами подписывают XML в России?
Что такое канонизация и зачем она нужна?
Как проверить подпись МЧД в формате XML?
Можно ли проверить XML-подпись бесплатно?
В чём разница между вложенной и отсоединённой XML-подписью при проверке?
Как долго можно проверять XML-подпись после её создания?
Что проверяет портал СМЭВ?
Зачем нужна визуализация XML-подписи?
Можно ли автоматизировать проверку большого потока XML-подписей?
Проверка XML-подписи — это та задача, где легко споткнуться на мелочи: не тот файл загрузили, не тот алгоритм канонизации применили, забыли про метку времени для архива. Сервис Добыто берёт эту механику на себя: определяет формат подписи, проверяет целостность, сертификат и цепочку доверия, показывает понятный результат вместо сырого XML с ошибкой.
За время работы сервиса мы подключили сотни компаний к электронному кадровому документообороту, где подписание и проверка идут потоком — от трудовых договоров до приказов и согласий. Проверка работает в браузере, без установки криптопровайдера, а для долгого хранения мы закладываем метки времени, чтобы юридическая значимость держалась весь срок хранения документа.
- Поддержка всех трёх видов подписей — ПЭП, УНЭП, УКЭП — для любого кадрового процесса
- Проверка откреплённой и присоединённой подписи прямо в браузере, без установки криптопровайдера
- Вся цепочка подписей фиксируется с отметками времени — защита при проверках ГИТ и в суде
- Хранение документов до 50 лет — доступ к архиву сохраняется даже при расторжении договора с провайдером
- Юридическая значимость по 63-ФЗ и 377-ФЗ — электронный документ равносилен бумажному
- Готовый коннектор с 1С — отправка на подписание одной кнопкой из привычного интерфейса
- Защищённые каналы связи, шифрование данных, соответствие 152-ФЗ, лицензии ФСТЭК и ФСБ