Подпись и шифрование с помощью КриптоАРМ через командную строку: примеры, нюансы, сценарии
Командная строка КриптоАРМ — это инструмент для автоматизации криптографических операций: подписание, шифрование, проверка и расшифрование. Он особенно полезен в сценариях, где нужна повторяемость и интеграция в скрипты: миграция с tdhelper.vbs, обработка папок с документами, формирование отчётов в JSON/PDF, цепочка «подписать → зашифровать» и другие.
В этой статье — рабочие шаблоны команд для КриптоАРМ 6.х.х и 7.х.х на Windows и Linux, нюансы использования (пути к исполняемым файлам, кодировка в cmd.exe) и частые сценарии автоматизации. Все примеры приведены в формате, который удобно копировать в скрипты и адаптировать под свои пути и серийные номера сертификатов.
Статья полезна администраторам, DevOps-инженерам, интеграторам и специалистам по ЭДО, которым нужно автоматизировать подписание и шифрование документов.
Если вы привыкли использовать КриптоАРМ 5 и хотите работать через CLI в новой версии КриптоАРМ, воспользуйтесь инструкцией по миграции.
Важно: путь к исполняемому файлу, то есть к программе КриптоАРМ — его необходимо указывать перед вводом команды. После указания пути до исполняемого файла необходимо поставить пробел, затем вводить команды. Для краткости во всех примерах ниже используется команда
cryptoarm.
В реальных сценариях обычно нужно указывать полный путь к исполняемому файлу:
- КриптоАРМ сборка 7.х.х на Windows:
"C:\Program Files\CryptoARM\cryptoarm.exe" - КриптоАРМ сборка 6.х.х на Windows:
"C:\Program Files\CryptoARM 6\cryptoarm6.exe" - КриптоАРМ сборка 7.х.х на Linux:
/opt/cryptoarm/cryptoarm - КриптоАРМ сборка 6.х.х на Linux:
/opt/cryptoarm_6/cryptoarm6
Пример для Windows (КриптоАРМ сборка 7.х.х):
"C:\Program Files\CryptoARM\cryptoarm.exe" certificates
Пример для Linux (КриптоАРМ сборка 7.х.х):
/opt/cryptoarm/cryptoarm certificates
Важно для Windows cmd.exe: кодировка вывода, которая определяет, как символы (буквы, знаки) преобразуются в последовательность байтов для хранения и вывода. Если кодировка вывода в программе и система, которая отображает текст (браузер, терминал), используют разные кодировки, могут возникнуть проблемы. Вместо нормального текста на экране появятся бессмысленные наборы символов.
В обычной командной строке Windows (cmd.exe) по умолчанию используется не Unicode-кодировка. Из-за этого русский текст в выводе КриптоАРМ может отображаться некорректно.
Перед выполнением команд переключите кодовую страницу:
chcp 65001
Примечание: для PowerShell это обычно не требуется, проблема чаще встречается именно в cmd.exe.
Предварительные условия работы с КриптоАРМ с помощью CLI
1. КриптоАРМ сборка 7.х.х установлен.
2. Есть доступ к личным сертификатам в хранилище ОС.
3. Для подписания и расшифрования известен PIN контейнера ключа.
1) Электронное подписание документа с помощью командной строки в КриптоАРМ
При подписании электронного документа вам потребуется серийный номер нужного сертификата:
- получите список доступных личных сертификатов с помощью команды
cryptoarm certificates - скопируйте серийный номер нужного сертификата и используйте его в параметре
--cert
Через командную строку можно подписать один файл или папку файлов присоединённой, отсоединённой, а также встроенной электронной подписью.
Команда: sign
1.1 Подпись одного файла (присоединённая ЭП)
Присоединённая электронная подпись — параметр, выставленный по умолчанию.
cryptoarm sign --cert "<SERIAL_SIGN_CERT>" --source-file ".\in\document.xml" --signed-file-path ".\out\document.xml"
1.2 Подпись папки файлов
Параметр: --source-folder
cryptoarm sign --cert "<SERIAL_SIGN_CERT>" --source-folder ".\in" --folder-save-signed ".\out\signed"
1.3 Отсоединённая подпись
Параметр: --detached
cryptoarm sign --cert "<SERIAL_SIGN_CERT>" --detached --source-file ".\in\report.pdf" --signed-file-path ".\out\report.pdf"
1.4 Подпись с PIN
Параметр:
cryptoarm sign --cert "<SERIAL_SIGN_CERT>" --pin "<PIN>" --source-file ".\in\data.txt" --signed-file-path ".\out\data.txt"
1.5 Встроенная подпись PDF документа (PAdES) с графическим штампом на последней странице
Параметр: --pades
Для подписания PDF файла встроенной подписью с графическим штампом размером 100×30 мм, расположенным в 20 мм от левого и нижнего края последней страницы.
"C:\Program Files\CryptoARM\cryptoarm.exe" sign --source-file "C:\Doc\Пример.pdf" --cert "5883d78e000300093ab6" --pin "12345678" --pades --stamp-width 100 --stamp-height 30 --stamp-padding-left 20 --stamp-padding-bottom 20
При необходимости, расположение и размер штампа, цвет обводки и указанные реквизиты можно изменить.
Для КриптоАРМ, сборка 6.x.x, подготовили статью «Как добавить штамп для электронной подписи PAdES в консольном режиме».
2) Шифрование с помощью командной строки в КриптоАРМ
КриптоАРМ поддерживает шифрование одного или нескольких файлов в адрес одного или нескольких сертификатов через командную строку. Для этого вам понадобится установленный открытый ключ сертификата электронной подписи получателя зашифрованного файла на устройстве.
Команда: encrypt
2.1 Шифрование одного файла для одного получателя
cryptoarm encrypt --cert "<SERIAL_ENCRYPT_CERT>" --source-file ".\in\document.xml" --encrypted-file-path ".\out\document.xml"
2.2 Шифрование файла для нескольких получателей
Параметр: --cert "<SERIAL_1> <SERIAL_2>"
cryptoarm encrypt --cert "<SERIAL_1> <SERIAL_2>" --source-file ".\in\contract.pdf" --encrypted-file-path ".\out\contract.pdf"
2.3 Шифрование папки
Параметр: --source-folder
cryptoarm encrypt --cert "<SERIAL_ENCRYPT_CERT>" --source-folder ".\in" --folder-to-save-encrypted ".\out\encrypted"
3) Проверка электронной подписи с помощью командной строки в КриптоАРМ
Команда: verify
3.1 Проверка подписи файла
cryptoarm verify --source-file ".\out\document.xml.sig"
3.2 Проверка отсоединённой подписи с указанием исходного документа
Параметр: --document
cryptoarm verify --source-file ".\out\report.pdf.sig" --document ".\in\report.pdf"
3.3 Проверка всех подписей в папке
Параметр: --source-folder
cryptoarm verify --source-folder ".\out\signed"
3.4 Сохранение отчёта о проверке в JSON
Параметр: --save-report-json
cryptoarm verify --source-file ".\out\document.xml.sig" --save-report-json ".\out\reports"
3.5 Отчёты проверки в PDF по каждой подписи
Параметр --save-report-pdf создаёт отдельный PDF-отчёт для каждой проверенной подписи.
cryptoarm verify --source-folder ".\out\signed" --save-report-pdf ".\out\reports-pdf"
3.6 Единый PDF-отчёт по всем подписям
Параметр --save-report-pdf-merged создаёт один объединённый PDF-отчёт по всем проверенным подписям.
cryptoarm verify --source-folder ".\out\signed" --save-report-pdf-merged ".\out\reports-pdf-merged"
4) Расшифрование с помощью командной строки в КриптоАРМ
Расшифрование доступно при наличии установленного личного сертификата ЭП. Команда: decrypt
4.1 Расшифрование одного файла
cryptoarm decrypt --source-file ".\out\document.xml.enc" --decrypted-file-path ".\out\document.xml"
4.2 Расшифрование папки
Параметр: --source-folder
cryptoarm decrypt --source-folder ".\out\encrypted" --folder-to-save-decrypted ".\out\decrypted"
4.3 Расшифрование с PIN
Параметр: --pin
cryptoarm decrypt --pin "<PIN>" --source-file ".\out\archive.zip.enc" --decrypted-file-path ".\out\archive.zip"
4.4 Практический пример расшифрования файла с PIN-кодом
"C:\Program Files\CryptoARM\cryptoarm.exe" decrypt --pin "12345678" --source-file "C:\Documents\Encrypted_Example.enc" --decrypted-file-path "C:\Documents\Decrypted_Example.txt"
5) Частый сценарий «подписать, затем зашифровать» с помощью командной строки в КриптоАРМ
cryptoarm sign --cert "<SERIAL_SIGN_CERT>" --source-folder ".\in" --folder-save-signed ".\step1_signed"
cryptoarm encrypt --cert "<SERIAL_ENCRYPT_CERT>" --source-folder ".\step1_signed" --folder-to-save-encrypted ".\out_encrypted"
6) Частый сценарий «расшифровать, затем проверить подпись» с помощью командной строки в КриптоАРМ
cryptoarm decrypt --source-folder ".\in_encrypted" --folder-to-save-decrypted ".\step1_decrypted"
cryptoarm verify --source-folder ".\step1_decrypted"
cryptoarm verify --source-folder ".\step1_decrypted" --save-report-pdf ".\step1_decrypted_reports_pdf"
cryptoarm verify --source-folder ".\step1_decrypted" --save-report-pdf-merged ".\step1_decrypted_reports_pdf_merged"
В этом сценарии:
--save-report-pdfсоздаёт отдельный PDF-отчёт для каждой проверенной подписи.--save-report-pdf-mergedсоздаёт один объединённый PDF-отчёт по всем подписям в папке.
Примечания
1. В отличие от tdhelper командная строка КриптоАРМ сборка 7.х.х не использует профили КриптоАРМ как параметр команды. Вместо этого параметры операции задаются явно флагами.
2. Для URL параметров --tsp и --ocsp в Windows используйте кавычки согласно подсказке --help текущей версии командной строки.
3. Если названия опций в вашей сборке немного отличаются, сверяйтесь с локальной справкой:
cryptoarm --helpcryptoarm sign --helpcryptoarm encrypt --helpcryptoarm verify --helpcryptoarm decrypt --help
Заключение
Командная строка КриптоАРМ даёт понятный и воспроизводимый способ автоматизации типовых операций с электронной подписью и шифрованием. Шаблоны команд из статьи можно сразу использовать в скриптах, адаптируя пути и серийные номера сертификатов под свою инфраструктуру: подписывать, шифровать, проверять подпись или расшифровать.
Для миграции сценариев с tdhelper.vbs на командную строку достаточно переписать логику в виде последовательности команд sign, encrypt, verify, decrypt и добавить проверку кодов возврата. Если вы планируете внедрять такие сценарии в CI/CD, оркестрацию или интеграцию с 1С‑Битрикс/другими системами, полезно сразу заложить формирование отчётов (JSON/PDF) и централизованное хранение логов.
Если вы заинтересовались управлением программой КриптоАРМ через командную строку, воспользуйтесь информацией в Документации. При возникновении вопросов пишите в онлайн-чат на сайте или на support@trusted.ru.