Коротко о главном
Подписывается не папка, а каждый файл внутри неё отдельно — такова архитектура электронной подписи. Если нужно подписать папку целиком, её упаковывают в архив (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), и отправляете оба файла. Получатель распаковывает архив, проверяет подпись архива, и если подпись действительна, значит содержимое не трогали.
Встроенная и отсоединённая подпись при массовом подписании
Этот выбор тоже влияет на процедуру и на результат.
Встроенная подпись добавляется внутрь каждого файла. При массовом подписании вы подписываете файл1.pdf и получаете файл1.pdf (изменённый, с подписью внутри). На выходе столько же файлов, сколько было на входе, но каждый содержит подпись. При открытии в Word или PDF-ридере люди видят визуальный значок подписи.
Преимущество: никаких пар файл+подпись, не нужно отслеживать .sig-файлы. Минус: оригинальные файлы изменяются (их размер немного растёт из-за добавления подписи).
Отсоединённая подпись хранится в отдельных файлах с расширением .sig. Вы подписываете файл1.pdf и получаете файл1.pdf (оригинал) и файл1.pdf.sig (подпись). На выходе в два раза больше файлов.
Преимущество: оригинальные файлы не трогаются. Минус: нужно передать оба файла вместе и не потерять .sig-файлы.
При пакетном подписании встроенная подпись предпочтительнее, если в вашей системе это поддерживается. Но если вы подписываете архив, встроенная обычно невозможна (ZIP не поддерживает встроенные подписи по стандарту), поэтому остаётся отсоединённая (myfolder.zip.sig).
Пакетное подписание в КриптоПро: графический интерфейс
КриптоПро CSP имеет встроенный файловый менеджер, который позволяет подписывать несколько файлов одновременно.
Процедура:
- Откройте КриптоПро → Работа с файлами → Подпись.
- В появившемся окне нажмите кнопку «Добавить файлы» (или перетащите файлы из проводника).
- Выберите в левой части окна все файлы, которые нужно подписать. Используйте Ctrl+A для выделения всех или Ctrl+Click для выделения конкретных файлов.
- В правой части выберите подпись из выпадающего списка (если у вас их несколько).
- Выберите тип подписи: встроенная или отсоединённая (если формат поддерживает обе).
- Нажмите кнопку подписания (название кнопки зависит от версии: «Подписать», «Sign», «OK»).
- Система один раз попросит пароль к контейнеру (если пароль не запомнен и не закэширован).
- Система подпишет все файлы партией и выведет отчёт о результатах (сколько успешно, сколько ошибок).
На выходе в одной и той же папке (или указанной вами папке) появятся подписанные файлы или файлы с подписями рядом.
Пакетное подписание из командной строки
Для продвинутых пользователей и автоматизации есть способ подписывать через командную строку. Это полезно, если нужно подписать несколько тысяч файлов автоматически, без человеческого вмешательства на каждом шаге.
КриптоПро 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 и т.д.).
Командная строка требует определённых навыков, зато позволяет завести скрипт, который работает автоматически, без нажимания кнопок. Это незаменимо для автоматизации массовых операций.
Массовое подписание через Контур.Крипто (онлайн)
Если КриптоПро не установлена или вы не хотите связываться с командной строкой, есть онлайн-сервис Контур.Крипто. Это веб-интерфейс, который работает в браузере.
Процедура:
- Откройте сайт Контур.Крипто (ссылка на странице продуктов).
- На главной странице нажмите кнопку загрузки файлов или перетащите файлы в окно браузера.
- Система поддерживает загрузку нескольких файлов одновременно. Вы можете загрузить 5, 10, 20 файлов за один раз.
- Система автоматически обнаружит установленные на вашем компьютере криптопровайдеры и подгрузит список доступных подписей.
- Выберите подпись из списка.
- Выберите тип подписи: встроенная или отсоединённая (зависит от формата файла).
- Нажмите кнопку «Подписать все».
- Система один раз попросит пароль контейнера.
- Подпишет все файлы параллельно и предложит скачать их (либо отдельно, либо всеми одним архивом).
Преимущество онлайн-сервиса: ничего не нужно устанавливать, интерфейс интуитивный, не нужно помнить параметры командной строки.
Минус: при загрузке очень больших файлов или большого количества браузер может зависнуть. Рекомендуется работать пачками по 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.
Нужна консультация по настройке массового подписания в вашей компании? Мы выпускаем подписи, настраиваем КриптоПро и помогаем интегрировать подписание в систему документооборота. Выберите свой город, и специалист подскажет оптимальный способ для вашего объёма документов.
Часто задаваемые вопросы
Итог
Подписать папку целиком можно двумя способами: упаковать в архив и подписать архив целиком, или подписать каждый файл отдельно. Выбор зависит от требований получателя и количества файлов. Для небольших объёмов (10–50 файлов) удобнее всего использовать графический интерфейс КриптоПро или веб-сервис Контур.Крипто. Для больших объёмов имеет смысл командная строка cryptcp.exe или интеграция через систему документооборота. При работе с отсоединёнными подписями главное — не потерять .sig-файлы и не перепутать пары файл+подпись. Пароль при массовом подписании спрашивается один раз, что экономит время. После подписания обязательно проверьте результаты: сколько файлов подписалось успешно, валидны ли подписи, совпадают ли пары файл+подпись. Если делать это регулярно и много, переходите на автоматизацию через API или специализированную систему ЭДО.