Как подписать сразу несколько файлов и папку

Коротко о главном

Подписывается не папка, а каждый файл внутри неё отдельно — такова архитектура электронной подписи. Если нужно подписать папку целиком, её упаковывают в архив (ZIP или RAR), а потом подписывают архив как единый файл. Когда говорят о «массовом подписании», обычно имеют в виду одну из двух процедур: либо применить одну подпись к пачке файлов (каждому файлу), либо создать архив и подписать его. Выбор зависит от требований получателя и типа документооборота. На практике для 10–50 файлов удобнее всего онлайн-сервис вроде Контур.Крипто, для сотен — КриптоПро через командную строку, для тысяч — полная автоматизация через API или систему документооборота типа Диадока. Главное при массовом подписании: убедиться, что вы не запутались в парах файл+подпись, что пароль вводится один раз, а проверка результата прошла успешно.

В этой статье

  • Почему папку нельзя подписать как таковую
  • Архив целиком или подписать каждый файл отдельно: когда какой способ
  • Требования получателя к формату массового подписания
  • Встроенная и отсоединённая подпись при пакетном подписании
  • Как подписать несколько файлов в КриптоПро через графический интерфейс
  • Пакетное подписание из командной строки (cryptcp.exe)
  • Массовое подписание через Контур.Крипто онлайн
  • Как не перепутать пары файл+подпись при отсоединённой подписи
  • Ввод пароля при подписании партиями: сокращение операций
  • Проверка результата массового подписания

Папка и электронная подпись: почему целиком не получится

Технически электронная подпись работает с содержимым файла — генерируется хеш из байтов файла, этот хеш подписывается закрытым ключом. Папка не имеет содержимого в этом смысле: это контейнер, который указывает на расположение файлов на диске. У папки нет «данных для подписания».

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

Из этого логического следствия вытекают два способа подписания папки:

  • Способ 1: подписать каждый файл отдельно. Вы подписываете doc1.pdf, doc2.docx, doc3.xlsx — каждому файлу создаётся собственная подпись (либо встроенная, либо отсоединённая .sig-файл). На выходе получается папка с оригинальными файлами и их подписями рядом.
  • Способ 2: упаковать папку в архив и подписать архив. Берёте всю папку, создаёте ZIP-архив (myfolder.zip), а потом подписываете архив целиком (myfolder.zip.sig или встроенная подпись в zip, если формат поддерживает). На выходе один файл архива с одной подписью.

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

Архив или отдельные файлы: как выбрать

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

Когда использовать Архив (один файл) Отдельные файлы с подписями
Количество файлов От 20 и выше 2–15 файлов
Разные форматы в одной папке Подходит (один архив) Каждый файл подписывается отдельно
Требования регламента «Предоставить папку под одной подписью» «Каждый документ подписан отдельно»
Система документооборота Диадок, Контур.Экстерн (требуют отдельные) Любая система (стандарт)
Удобство передачи Один файл, риск потери Много файлов, риск рассинхронизации
Раскрытие документов в процессе Нужно распаковать архив Файлы сразу открыты

Пример из жизни: вы готовите пакет счетов-фактур для отправки в систему Диадока. Там требование простое: каждый счёт должен быть подписан отдельно. Архив там не поддерживается. Вы подписываете счет1.xlsx, счет2.xlsx, счет3.xlsx — каждый в КриптоПро, и на выходе получаете три файла с встроенными подписями. В Диадоке вы загружаете все три файла рядом, и система видит, что каждый уже подписан.

Другой пример: вы отправляете папку документов по факторингу внешней организации, которая просит: «пришлите полную папку под одной подписью, чтобы мы знали, что ничего не переделали после получения». Тогда вы: создаёте архив myfolder.zip, подписываете его (выходит myfolder.zip.sig), и отправляете оба файла. Получатель распаковывает архив, проверяет подпись архива, и если подпись действительна, значит содержимое не трогали.

Наталья Ковалёва
Мнение эксперта
Наталья Ковалёва
Главный бухгалтер
Предупреждение от бывалого: когда я не знала про архивы, я подписывала папку на 50 счётов по одному — час работы. Потом я узнала про архивы и теперь упаковываю все в ZIP, подписываю и готово за 2 минуты. Только нужно не забыть распаковать архив перед тем, как отправить во внутренний документооборот — там архивы могут не поддерживаться.

Встроенная и отсоединённая подпись при массовом подписании

Этот выбор тоже влияет на процедуру и на результат.

Встроенная подпись добавляется внутрь каждого файла. При массовом подписании вы подписываете файл1.pdf и получаете файл1.pdf (изменённый, с подписью внутри). На выходе столько же файлов, сколько было на входе, но каждый содержит подпись. При открытии в Word или PDF-ридере люди видят визуальный значок подписи.

Преимущество: никаких пар файл+подпись, не нужно отслеживать .sig-файлы. Минус: оригинальные файлы изменяются (их размер немного растёт из-за добавления подписи).

Отсоединённая подпись хранится в отдельных файлах с расширением .sig. Вы подписываете файл1.pdf и получаете файл1.pdf (оригинал) и файл1.pdf.sig (подпись). На выходе в два раза больше файлов.

Преимущество: оригинальные файлы не трогаются. Минус: нужно передать оба файла вместе и не потерять .sig-файлы.

При пакетном подписании встроенная подпись предпочтительнее, если в вашей системе это поддерживается. Но если вы подписываете архив, встроенная обычно невозможна (ZIP не поддерживает встроенные подписи по стандарту), поэтому остаётся отсоединённая (myfolder.zip.sig).

Пакетное подписание в КриптоПро: графический интерфейс

КриптоПро CSP имеет встроенный файловый менеджер, который позволяет подписывать несколько файлов одновременно.

Процедура:

  1. Откройте КриптоПро → Работа с файлами → Подпись.
  2. В появившемся окне нажмите кнопку «Добавить файлы» (или перетащите файлы из проводника).
  3. Выберите в левой части окна все файлы, которые нужно подписать. Используйте Ctrl+A для выделения всех или Ctrl+Click для выделения конкретных файлов.
  4. В правой части выберите подпись из выпадающего списка (если у вас их несколько).
  5. Выберите тип подписи: встроенная или отсоединённая (если формат поддерживает обе).
  6. Нажмите кнопку подписания (название кнопки зависит от версии: «Подписать», «Sign», «OK»).
  7. Система один раз попросит пароль к контейнеру (если пароль не запомнен и не закэширован).
  8. Система подпишет все файлы партией и выведет отчёт о результатах (сколько успешно, сколько ошибок).

На выходе в одной и той же папке (или указанной вами папке) появятся подписанные файлы или файлы с подписями рядом.

Артём Соколов
Мнение эксперта
Артём Соколов
Специалист по внедрению ЭДО
Лайфхак: если вы подписываете файлы из разных папок, КриптоПро может спросить, куда сохранять результаты. Я всегда выбираю «Исходная папка» (Save to source folder), чтобы подписанные файлы остались там же. Потом я не ищу результаты по всем углам системы и не путаюсь в копиях.

Пакетное подписание из командной строки

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

КриптоПро CSP поставляется с утилитой cryptcp.exe, которая работает из командной строки.

Синтаксис команды для подписания папки целиком:

cryptcp.exe -sign -dir D:\MyDocuments -thumbprint 12AB34CD56EF78... -pin 1234

Расшифровка параметров:

  • -sign — режим подписания.
  • -dir D:\MyDocuments — путь к папке с файлами. Утилита пройдёт по всем файлам в папке рекурсивно.
  • -thumbprint 12AB34CD56EF78... — отпечаток сертификата вашей подписи. Его можно получить из КриптоПро или через другую утилиту.
  • -pin 1234 — ПИН-код, если подпись на токене. Если подпись на компьютере, используйте -password password123 вместо pin.
  • -f (опционально) — подписывать только файлы, не папки.
  • -d (опционально) — создавать отсоединённые подписи (.sig-файлы). Без этого флага создаются встроенные подписи.

Найти отпечаток сертификата можно в КриптоПро или через команду:

cryptcp.exe -thumbprint

Она выведет список всех доступных сертификатов с их отпечатками.

Пример команды для подписания всех PDF в папке с отсоединёнными подписями:

cryptcp.exe -sign -dir C:\Reports -thumbprint ABC123DEF456 -password mypassword -d

На выходе в папке C:\Reports появятся все исходные файлы и рядом с каждым файл подписи (report1.pdf и report1.pdf.sig, report2.pdf и report2.pdf.sig и т.д.).

Командная строка требует определённых навыков, зато позволяет завести скрипт, который работает автоматически, без нажимания кнопок. Это незаменимо для автоматизации массовых операций.

Массовое подписание через Контур.Крипто (онлайн)

Если КриптоПро не установлена или вы не хотите связываться с командной строкой, есть онлайн-сервис Контур.Крипто. Это веб-интерфейс, который работает в браузере.

Процедура:

  1. Откройте сайт Контур.Крипто (ссылка на странице продуктов).
  2. На главной странице нажмите кнопку загрузки файлов или перетащите файлы в окно браузера.
  3. Система поддерживает загрузку нескольких файлов одновременно. Вы можете загрузить 5, 10, 20 файлов за один раз.
  4. Система автоматически обнаружит установленные на вашем компьютере криптопровайдеры и подгрузит список доступных подписей.
  5. Выберите подпись из списка.
  6. Выберите тип подписи: встроенная или отсоединённая (зависит от формата файла).
  7. Нажмите кнопку «Подписать все».
  8. Система один раз попросит пароль контейнера.
  9. Подпишет все файлы параллельно и предложит скачать их (либо отдельно, либо всеми одним архивом).

Преимущество онлайн-сервиса: ничего не нужно устанавливать, интерфейс интуитивный, не нужно помнить параметры командной строки.

Минус: при загрузке очень больших файлов или большого количества браузер может зависнуть. Рекомендуется работать пачками по 20–50 файлов.

Как не перепутать пары файл+подпись

Если вы создаёте отсоединённые подписи, на выходе получаете много файлов: документ1.pdf, документ1.pdf.sig, документ2.docx, документ2.docx.sig и т.д.

При передаче получателю нужно убедиться, что пары не рассинхронизировались.

Ошибка 1: забыли отправить .sig-файл. Вы отправили файл1.pdf, но забыли файл1.pdf.sig. Получатель скачал файл, но не может проверить подпись, потому что нет самой подписи.

Ошибка 2: переименовали файл после подписания. Вы подписали файл1.pdf (создалась файл1.pdf.sig), потом переименовали файл в report.pdf. Теперь у вас есть report.pdf и файл1.pdf.sig — они не совпадают по имени, и система не сможет их связать при проверке.

Ошибка 3: смешали файлы от разных подписей. Вы подписали документы 1–5 подписью А, потом документы 6–10 подписью Б. При отправке в одной папке смешались все файлы, и получатель не знает, какой документ какой подписью подписан.

Как избежать ошибок:

  • При встроенной подписи: переименовывайте файлы до подписания, а не после. После подписания оставляйте имена как есть. Отправляйте оригинальные файлы с встроенными подписями — они уже содержат подпись внутри.
  • При отсоединённой подписи: подписывайте файлы в отдельных папках, если они от разных подписей. Или явно пометьте, какие файлы какой подписью подписаны. Например: «Папка_подпись_А» содержит файлы 1–5 с подписью А, «Папка_подпись_Б» содержит файлы 6–10 с подписью Б.
  • Перед отправкой: перепроверьте, что количество файлов и .sig-файлов совпадает. В папке должно быть чётное число файлов: половина — оригиналы, половина — подписи.
  • При передаче: не изменяйте имена файлов. Если нужно отправить doc1.pdf.sig, отправьте именно его, не переименовывая в doc1.sig или ещё как-то.

Ввод пароля при массовом подписании

При подписании большого количества файлов паролей может быть несколько вариантов:

Вариант 1: пароль запрашивается один раз. Это наиболее удобный сценарий. Вы нажали подписание 100 файлов, система один раз попросила пароль, вы его ввели, и система подписала все 100 файлов в фоне. Это поведение по умолчанию в КриптоПро и Контур.Крипто.

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

Вариант 3: используется токен (флешка, Рутокен). При работе с токеном ПИН-код требуется один раз при подключении токена. После этого пароль больше не спрашивается в течение сеанса. Если токен выключить (извлечь), при попытке подписать следующий файл система затребует ПИН заново.

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

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

После того как система подписала все файлы, важно убедиться, что всё прошло успешно.

Шаг 1: отчёт системы. КриптоПро и Контур.Крипто выводят отчёт: сколько файлов подписано успешно, сколько ошибок. Если есть ошибки, система указывает, какие файлы не подписались и почему (например, «файл защищён от записи» или «истёк срок сертификата»).

Шаг 2: проверка папки. Откройте папку результатов и убедитесь, что файлы туда попали. Если вы создали отсоединённые подписи, проверьте, что для каждого файла есть соответствующий .sig. Подсчитайте: файлов должно быть в два раза больше (оригиналы + подписи).

Шаг 3: проверка одной подписи вручную. Возьмите один файл из результатов и проверьте подпись через онлайн-сервис Контур.Крипто или через КриптоПро → Проверка подписей. Если одна подпись валидна, остальные с высокой вероятностью тоже в порядке (если они все подписаны из одного пакета).

Шаг 4: проверка срока действия подписей. Убедитесь, что подписи действительны на момент подписания. Если вы подписали файлы просроченной подписью (срок действия сертификата истёк), подписи будут считаться недействительными, хотя сама операция завершится без ошибок. Проверьте срок действия своего сертификата перед началом массового подписания.

Шаг 5: если это архив, распакуйте и проверьте содержимое. Если вы подписали архив (ZIP), распакуйте его на другом компьютере и убедитесь, что все файлы распаковались корректно и содержимое не повреждено. Это гарантирует, что архив был создан и подписан правильно.

Когда имеет смысл перейти на автоматизацию

Если вам нужно подписывать:

  • 10–50 файлов раз в месяц: КриптоПро или Контур.Крипто будет достаточно.
  • 100–500 файлов раз в неделю: имеет смысл завести скрипт на базе cryptcp.exe, который будет подписывать партиями.
  • Тысячи файлов ежедневно: нужна полная интеграция через Диадок или другую систему документооборота, которая автоматизирует подписание через API.
Нужна консультация по настройке массового подписания в вашей компании? Мы выпускаем подписи, настраиваем КриптоПро и помогаем интегрировать подписание в систему документооборота. Выберите свой город, и специалист подскажет оптимальный способ для вашего объёма документов.

Часто задаваемые вопросы

Если я подписал папку как архив (myfolder.zip.sig), получатель может посмотреть, какие файлы внутри архива?
Да, архив открывается как обычно. Получатель распаковывает его и видит все файлы внутри. Подпись архива гарантирует только то, что содержимое архива не изменялось после подписания. Если нужна конфиденциальность, архив нужно шифровать отдельно, это совсем другой процесс.
Можно ли подписать папку встроенной подписью?
Встроенная подпись добавляется внутрь файла. Папка не является файлом, поэтому встроенная подпись к папке не применима. Если вы упакуете папку в архив (ZIP), встроенная подпись не будет работать — ZIP не поддерживает встроенные подписи по стандарту. Остаётся только отсоединённая подпись (myfolder.zip.sig).
Я подписал 100 файлов в КриптоПро, но некоторые не подписались. Как узнать, какие именно?
КриптоПро выводит отчёт о результатах с указанием ошибок. Прочитайте отчёт — там указаны имена файлов, которые не подписались, и причины. Частые причины: файл защищён от записи (решение: снять защиту), недостаточно прав доступа (запустить КриптоПро от администратора), истёк срок сертификата (продлить подпись). Переподпишите только те файлы, которые не подписались с первой раз.
При массовом подписании через командную строку система просит пароль для каждого файла. Как это избежать?
Используйте параметр -password yourpassword в команде cryptcp.exe. Тогда система один раз возьмёт пароль из параметра и подпишет все файлы без повторных запросов. Не забывайте про безопасность: если вы пишете пароль в батник или скрипт, убедитесь, что этот файл защищён от несанкционированного доступа.
Я создал отсоединённые подписи для папки из 50 файлов. Как убедиться, что ни один .sig-файл не потерялся?
Самый простой способ: подсчитайте файлы в папке. Если вы подписали 50 файлов, в папке должно быть 100 файлов (50 оригиналов + 50 подписей). Если меньше — что-то потерялось. Второй способ: откройте папку в командной строке и выполните команду dir *.sig | find /c /v "" — она выведет количество всех .sig-файлов. Сравните с количеством оригиналов.
Может ли система ошибиться при пакетном подписании и подписать один файл дважды?
Нет, система подписывает каждый файл один раз. Если вы выбрали встроенную подпись, в один файл встраивается одна подпись. Если отсоединённую — создаётся один .sig-файл. Ошибки при пакетном подписании происходят в обратном направлении: файл не подписывается вообще (ошибка, которая видна в отчёте), а не дублируется.
Я подписал архив целиком, но получатель говорит, что не может распаковать архив. Что не так?
Подпись архива никак не влияет на возможность распаковки. Если архив не распаковывается, причина в самом архиве, а не в подписи. Проверьте: не повреждён ли архив при создании, не урезана ли часть файла при передаче, не заблокирован ли файл антивирусом. Распакуйте архив на своём компьютере — если на вашей машине он распаковывается, значит проблема на стороне получателя (некомpatible архиватор, неполная загрузка файла).

Итог

Подписать папку целиком можно двумя способами: упаковать в архив и подписать архив целиком, или подписать каждый файл отдельно. Выбор зависит от требований получателя и количества файлов. Для небольших объёмов (10–50 файлов) удобнее всего использовать графический интерфейс КриптоПро или веб-сервис Контур.Крипто. Для больших объёмов имеет смысл командная строка cryptcp.exe или интеграция через систему документооборота. При работе с отсоединёнными подписями главное — не потерять .sig-файлы и не перепутать пары файл+подпись. Пароль при массовом подписании спрашивается один раз, что экономит время. После подписания обязательно проверьте результаты: сколько файлов подписалось успешно, валидны ли подписи, совпадают ли пары файл+подпись. Если делать это регулярно и много, переходите на автоматизацию через API или специализированную систему ЭДО.

Читайте также

Электронная подпись врача: УКЭП, МЧД и работа в ЕГИСЗ

Какая подпись нужна врачу: квалифицированная УКЭП для ЕГИСЗ, электронных рецептов и больничных листов. МЧД для подписания от имени организации, оплата в госучреждениях и частных клиниках.

Электронная подпись нотариуса: что нужно знать

ЭЦП нотариуса — квалифицированная подпись, которую выпускает отдельная категория УЦ ФНС. Нотариальные действия в электронном виде, ЕИС нотариата и удостоверение равнозначности документов.

Электронная подпись для адвоката

Электронная подпись адвоката — квалифицированный сертификат с OID адвоката, выпускается в УЦ ФНС. Нужна для подачи в «Мой арбитр», ГАС «Правосудие», КИС АР и адвокатских запросов.

Электронная подпись кадастрового инженера

Какая подпись нужна кадастровому инженеру для подписания технических и межевых планов, требования к формату документов в XML, как получить от УЦ ФНС, личный кабинет инженера.

Электронная подпись арбитражного управляющего

Зачем подпись арбитражному управляющему, требования ФНС, члены СРО, документы в ЕФРСБ, что при исключении из организации, где получить КЭП.

Электронная подпись для ЧОП и лицензируемых видов деятельности

Какая электронная подпись нужна ЧОП для получения лицензии охранной деятельности через Госуслуги: реестровая модель, документы от руководителя, ежегодные подтверждения, что происходит при просрочке.