Командная строка КриптоАРМ: подпись, шифрование и проверка - Документация для КриптоАРМ 6
Перейти к содержанию

Выполнение операций в командной строке#

Научитесь работать с командной строкой (CLI) КриптоАРМ: подписывать, шифровать, расшифровывать и проверять файлы. В этом руководстве собраны команды, параметры и практические примеры для Windows, Linux и macOS.

💡 Примечание: инструкция рассчитана на технических специалистов — тех, кто настраивает автоматическую обработку документов. Для повседневной работы командная строка не нужна: те же операции выполняются в окне приложения и из контекстного меню Проводника.

Содержание:


Общая информация#

CLI (Command Line Interface, интерфейс командной строки) — это способ управления приложением с помощью текстовых команд, вводимых через терминал или консоль.

Команды определяют, какие операции выполнить, с какими параметрами и над какими файлами.

CLI также подходит для автоматизации — выполнения операций без участия пользователя в составе систем обмена и скриптов .bat и .sh.

Важные замечания#

  • Перед использованием CLI убедитесь, что приложение готово к работе с электронной подписью: сертификат установлен, лицензия активирована.

🔍 Подробную информацию о подготовке можно найти в инструкции Начало работы.

  • Для подписи, расшифрования и PAdES сертификатами КриптоПро требуется лицензия КриптоАРМ. Проверка подписи, просмотр сертификатов, перекодирование, снятие подписи и объединение подписей лицензии не требуют.
  • Перед вводом команды указывается путь до исполняемого файла, затем через пробел — команда и её параметры.
  • Недействительный сертификат останавливает операцию: подтверждения в командной строке не запрашиваются, согласие передаётся флагом --force.
  • Если --pin не указан, КриптоПро может показать собственное системное окно ввода ПИН-кода.

Синтаксис команд#

Общий формат вызова:

cryptoarm-sign <команда> [параметры]
  • команда пишется первой, после пути до исполняемого файла;
  • <текст> — значение параметра: путь к файлу, серийный номер сертификата, адрес службы и т. п.;
  • [текст] — необязательный параметр: если его не задать, используется значение по умолчанию;
  • все команды и параметры пишутся через пробел.

Пути к исполняемым файлам#

Если каталог приложения не добавлен в PATH, укажите полный путь к исполняемому файлу:

Система Путь при установке по умолчанию
Windows C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe
Linux "/opt/CryptoARM Sign and Encrypt/cryptoarm-sign"
macOS "/Applications/CryptoARM Sign and Encrypt.app/Contents/MacOS/CryptoARM Sign and Encrypt"

Ввод и вывод#

Источник данных указывается одним из двух параметров:

Параметр Описание По умолчанию
--source-file <путь> Один файл —
--source-folder <путь> Все файлы верхнего уровня папки —

Правила путей:

  • --source-file и --source-folder нельзя указывать одновременно;
  • обход папки не рекурсивный;
  • путь может быть обычным путём или URL вида file://;
  • папку результата и конкретный файл результата нельзя указывать вместе;
  • конкретный файл результата возможен только с --source-file;
  • недостающие папки результата создаются автоматически.

Общие параметры#

Параметр Описание По умолчанию
--provider Криптопровайдер: x509 или pgp x509
--pin <pin> ПИН-код закрытого ключа для подписи и расшифрования —
-f, --force Использовать недействительный сертификат без подтверждения Отключено
--logcrypto Включить журнал криптографической библиотеки Отключено
-h, --help Вывод справки по команде —

💡 Примечание: подробный лог для обращения в поддержку включается переменной окружения CRYPTOARM_TRACE=1 — отдельной настройки у CLI для этого нет.


Список команд#

Команда X.509 OpenPGP
sign / sig ✓ ✓
encrypt / enc ✓ ✓
sign-encrypt / se ✓ ✓
archive / arc ✓ —
decrypt / dec ✓ ✓
verify / ver ✓ ✓
verify_ts / vts ✓ —
unsign ✓ —
certificates / cer ✓ ✓

Подпись#

Команда: sign или sig

Команда позволяет выполнить операцию подписи одного или нескольких файлов.

Если в качестве исходного файла указать уже подписанный документ — файл с расширением .sig, .p7s, .sgn, .sign, .bin или .pem, — к нему будет добавлена соподпись. Для отсоединённой подписи исходный документ должен лежать рядом с контейнером и определяться по его имени.

Синтаксис#

cryptoarm-sign sign --cert <идентификатор> [--detached] [--pin <PIN>] [--standard <стандарт> --tsp <адрес>] [--enc DER|PEM|BASE-64] [--ext <расширение>] --source-file <файл>|--source-folder <папка> [--signed-file-path <файл>|--folder-save-signed <папка>]

Описание команды#

Общие параметры подписи#

Параметр Описание По умолчанию
--cert <id\|отпечаток\|серийный> Сертификат подписи: идентификатор из вывода certificates, отпечаток SHA-1 или серийный номер —
--standard <стандарт> Стандарт подписи: cms, cades-bes, cades-t, cades-xlt1, cades-a cades-bes для сертификатов КриптоПро, cms для системного провайдера
--attached Присоединённая подпись Используется по умолчанию
--detached Отсоединённая подпись Отключено
--enc <DER\|PEM\|BASE-64> Кодировка подписи DER
--ext <sig\|p7s\|sgn\|sign\|bin\|pem> Расширение файла подписи sig
--include-certs <signer\|without-root\|full> Какие сертификаты вложить в подпись signer
--custom-suffix <суффикс> Суффикс имени результата —

Если одновременно указаны --attached и --detached, используется --attached.

Архивирование результата#

Параметр Описание По умолчанию
--archive Упаковать результат подписи в ZIP Отключено
--separate-archives Отдельный ZIP на каждый исходный файл Отключено

--separate-archives используется только вместе с --archive.

Объединение подписей#

Подробнее про функцию Объединение подписей читайте в инструкции Подпись и шифрование.

Параметр Описание По умолчанию
--join-signs <файлы...> Список путей к файлам отсоединённых подписей (минимум два файла) —
--join-signs-folder <папка> Папка с файлами подписей для объединения —

Параметры подписи PDF (PAdES)#

--pades включает встроенную подпись для PDF-файлов и по умолчанию создаёт видимый штамп из данных сертификата. Остальные файлы в том же вызове подписываются обычной подписью CMS/CAdES.

Параметр Описание По умолчанию
--pades Подписать PDF по стандарту PAdES Отключено
--visual-copy Без --pades: сохранить рядом копию PDF со штампом без подписи Отключено
--pades-certify Сертифицирующая подпись Отключено
--signer-name <текст> Кем подписан (Name) в свойствах подписи Имя из сертификата
--reason <текст> Обоснование подписания (Reason) —
--location <текст> Местоположение (Location) —
--contact-info <текст> Контактная информация (ContactInfo) —
--pades-pdfa <pdfa-2b\|pdfa-3b> Преобразовать PDF в PDF/A перед подписью Отключено
--pades-pdfa-mode <copy\|image> Режим преобразования страниц copy
--pades-pdfa-dpi <70-300> Разрешение для страниц, преобразуемых в изображения 150
--pades-page <номер\|last> Страница размещения штампа last
--pades-all-pages Повторить изображение штампа на всех страницах Отключено
--pades-placement <x:y> Выравнивание: left\|center\|right : top\|center\|bottom —
--pades-width-mm <мм> Ширина штампа 102.3
--pades-height-mm <мм> Высота штампа 39.16
--pades-x-mm <мм> Горизонтальный отступ 0
--pades-y-mm <мм> Вертикальный отступ 20
--pades-rotation <0\|90\|180\|270> Поворот изображения штампа 0
--pades-visible-image <png> Готовое изображение вместо генерируемого штампа —
--pades-add-signer-name Добавить имя подписанта в имя PDF-файла Отключено
--pades-signer-name <имя> Имя подписанта для имени PDF-файла —
--overwrite-original-pdf Заменить исходный PDF подписанным Отключено

⚠️ Ключ --overwrite-original-pdf изменяет исходный файл. Он работает только с --pades и --source-file, не сочетается с архивированием и указанием пути результата, а исходник заменяется лишь после успешного подписания.

Подписанный PDF сохраняет расширение исходного, поэтому имя результата задаёт --custom-suffix (документ_signed.pdf). Без суффикса результат рядом с исходником получает индекс — документ(1).pdf.

Содержимое генерируемого штампа:

Параметр Описание По умолчанию
--stamp-individual Добавить ФИО владельца сертификата —
--stamp-job-position [значение] Добавить должность —
--stamp-organization-name [значение] Добавить организацию —
--stamp-issuer-friendly-name [значение] Добавить издателя сертификата —
--stamp-mark [значение] Добавить примечание —
--stamp-description [значение] Добавить описание —
--stamp-location [значение] Добавить местоположение —
--stamp-sign-time Добавить дату и время формирования штампа —
--stamp-mchd <номер> Добавить номер машиночитаемой доверенности —

Положение и оформление генерируемого штампа:

Параметр Описание По умолчанию
--stamp-width <мм> Ширина штампа —
--stamp-height <мм> Высота штампа —
--stamp-padding-left <мм> Отступ слева и размещение по левому краю —
--stamp-padding-bottom <мм> Отступ снизу —
--stamp-color <#RRGGBB> Цвет текста и границы #000000
--stamp-background-color <#RRGGBB> Цвет фона #ffffff
--stamp-title <текст> Заголовок вместо стандартного —
--stamp-no-background Прозрачный фон под штампом Отключено
--stamp-page <номер> Страница размещения Последняя
--stamp-on-all-pages Повторить штамп на всех страницах Отключено
--stamp-pixel-ratio <0.5-4> Масштаб отрисовки штампа 1

Без дополнительных --stamp-* параметров в штамп попадают реквизиты сертификата: имя владельца, серийный номер и срок действия. Реквизиты, которые не помещаются в заданную область, не обрезаются — штамп рисуется целиком и вписывается в неё, становясь мельче. Параметры содержания штампа нельзя сочетать с --pades-visible-image.

Машиночитаемая доверенность#

Параметр Описание По умолчанию
--mchd-xml <путь> XML-файл машиночитаемой доверенности —
--mchd-signatures <пути...> Файлы подписи доверителя —
--mchd-signatures-folder <папка> Папка с файлами подписи доверителя —

Без --archive файлы МЧД копируются рядом с результатом подписи, с общим архивом — помещаются внутрь него.

Сетевые параметры#

Параметр Описание По умолчанию
--tsp <url> Адрес службы штампов времени —
--ocsp <url> Адрес службы OCSP —
--proxy <адрес> Адрес прокси-сервера —
--proxy-port <порт> Порт прокси —
--proxy-login <логин> Логин для прокси —
--proxy-password <пароль> Пароль для прокси —

Для стандартов cades-t, cades-xlt1 и cades-a параметр --tsp обязателен.

Ввод и вывод#

Параметр Описание По умолчанию
--source-file <файл> Путь к подписываемому файлу —
--source-folder <папка> Подписать все файлы из папки —
--signed-file-path <файл> Путь для результата подписи —
--folder-save-signed <папка> Папка для подписанных файлов —

Практические примеры#

Пример 1: Подпись со штампом на последней странице#

В этом примере подписывается PDF-файл со штампом размером 100 × 30 мм, расположенным в 20 мм от левого и нижнего края последней страницы.

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.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

Пример 2: Подпись со штампом красного цвета на всех страницах#

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe" sign ^
  --source-file "C:\Doc\Пример.pdf" ^
  --cert "5883d78e000300093ab6" ^
  --pin "12345678" ^
  --pades ^
  --stamp-width 80 ^
  --stamp-height 30 ^
  --stamp-padding-left 110 ^
  --stamp-padding-bottom 10 ^
  --stamp-color "#FF0000" ^
  --stamp-on-all-pages

Пример 3: Подпись документа с меткой времени#

В этом примере файл подписывается по стандарту CAdES-T, который включает штамп времени. Результат сохраняется с расширением .p7s в кодировке BASE-64.

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe" sign ^
  --source-file "C:\Documents\Example.pdf" ^
  --cert "5883d78e000300093ab6" ^
  --pin "12345678" ^
  --standard "cades-t" ^
  --tsp "https://example.com/tsp/tsp.srf" ^
  --enc "BASE-64" ^
  --ext "p7s"

Шифрование#

Команды: encrypt или enc

Команда позволяет выполнить шифрование одного или нескольких файлов в адрес одного или нескольких сертификатов.

Синтаксис#

cryptoarm-sign encrypt --cert <получатель...> [--alg <алгоритм>] [--enc DER|PEM|BASE-64] [--ext <расширение>] [--delete-source] --source-file <файл>|--source-folder <папка> [--encrypted-file-path <файл>|--folder-save-encrypted <папка>]

Описание команды#

Параметр Описание По умолчанию
--cert <получатели...> Сертификаты получателей; можно указать несколько —
--alg <алгоритм\|OID> Алгоритм шифрования gost-28147
--enc <DER\|PEM\|BASE-64> Кодировка результата DER
--ext <enc\|p7m\|p7e\|pem> Расширение зашифрованного файла enc
--delete-source Удалить исходный файл после успешного шифрования Отключено
--encrypted-file-path <файл> Путь для результата шифрования —
--folder-save-encrypted <папка> Папка для зашифрованных файлов —

Поддерживаемые имена алгоритмов: gost-28147, gost-2015-magma, gost-2015-kuznyechik, aes-256-cbc, des3-cbc. Также принимаются OID — например, 1.2.643.2.2.21 для ГОСТ 28147.

Перед шифрованием файлы можно упаковать в архив параметрами --archive, --separate-archives и --custom-suffix.

Практический пример#

В этом примере шифруется файл Example.txt в адрес сертификата с серийным номером 5883d78e000300093ab6. Результат сохраняется в файл Encrypted_Example.enc, исходный файл удаляется.

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe" encrypt ^
  --cert "5883d78e000300093ab6" ^
  --alg "gost-2015-kuznyechik" ^
  --enc "DER" ^
  --ext "enc" ^
  --delete-source ^
  --source-file "C:\Documents\Example.txt" ^
  --encrypted-file-path "C:\Documents\Encrypted_Example.enc"

Подпись и шифрование#

Команды: sign-encrypt или se

Команда подписывает, а затем шифрует файл или папку за один вызов.

Синтаксис#

cryptoarm-sign sign-encrypt --sign-cert <подписант> --recipient-cert <получатель...> --source-file <файл>|--source-folder <папка> [--folder-save-encrypted <папка>]

Описание команды#

Параметр Описание По умолчанию
--sign-cert <идентификатор> Сертификат подписи —
--recipient-cert <получатели...> Сертификаты получателей —

Остальные параметры — подписи, шифрования, PAdES, МЧД, TSP, прокси и архивирования — те же, что у отдельных команд, и с теми же значениями по умолчанию.


Архивирование#

Команды: archive или arc

Команда создаёт ZIP-архив без подписи и шифрования.

cryptoarm-sign archive \
  --source-folder ./docs \
  --folder-save-archive ./out
Параметр Описание По умолчанию
--archive-file-path <файл> Путь одного ZIP-результата —
--folder-save-archive <папка> Папка результатов —
--separate-archives Отдельный ZIP на каждый исходный файл Отключено
--custom-suffix <суффикс> Суффикс имени ZIP —

Кодирование и декодирование файлов#

Для команд sign (файлы подписи), certificates (сертификаты и запросы на сертификат) и encrypt (сертификаты и запросы) доступны параметры кодирования и декодирования. Они преобразуют двоичные данные в текстовый формат BASE-64 и обратно.

Кодирование удобно использовать, если файл нужно передать в текстовом виде — например, через системы, которые не поддерживают двоичные данные.

Параметр Описание
--decode <файл> [результат] Декодирование из формата DER в PEM (BASE-64)
--encode <файл> [результат] Кодирование из формата PEM (BASE-64) в DER
cryptoarm-sign sign --decode ./document.sig
cryptoarm-sign certificates --encode ./request.pem

Расшифрование#

Команды: decrypt или dec

Команда позволяет расшифровать один или несколько зашифрованных файлов.

Синтаксис#

cryptoarm-sign decrypt [--pin <PIN>] [--enc DER|PEM|BASE-64] --source-file <файл>|--source-folder <папка> [--decrypted-file-path <файл>|--folder-save-decrypted <папка>]

Описание команды#

Параметр Описание По умолчанию
--pin <pin> ПИН-код закрытого ключа расшифрования —
--enc <DER\|PEM\|BASE-64> Кодировка входного файла DER
--decrypted-file-path <файл> Путь для расшифрованного файла —
--folder-save-decrypted <папка> Папка для результатов расшифрования —

Практический пример#

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe" decrypt ^
  --pin "12345678" ^
  --source-file "C:\Documents\Encrypted_Example.enc" ^
  --decrypted-file-path "C:\Documents\Decrypted_Example.txt"

Проверка подписи#

Команды:

  • verify или ver;
  • verify_ts или vts — проверка штампов времени из подписи.

Команда позволяет проверить одну или несколько подписей либо штампы времени в файле подписи. Отчёт о проверке можно сохранить в формате PDF или JSON.

Синтаксис#

cryptoarm-sign verify --source-file <файл>|--source-folder <папка> [--document <исходный файл>] [-r-pdf [папка]] [-r-pdf-m [папка]] [-r-json [путь]]
cryptoarm-sign verify_ts --source-file <файл> [--document <исходный файл>] [-r [путь]]

Описание команды#

Параметр Описание По умолчанию
--source-file <файл> Файл подписи для проверки —
--source-folder <папка> Папка для пакетной проверки подписей —
--document <файл> Исходный файл для отсоединённой подписи —
--enc <DER\|PEM\|BASE-64> Кодировка подписи DER
-u, --unsign [папка] Извлечь исходный документ из присоединённой подписи —
-r-pdf, --save-report-pdf [папка] Отчёт PDF на каждый проверенный файл —
-r-pdf-m, --save-report-pdf-merged [папка] Общий отчёт PDF по всем файлам —
-r-json, --save-report-json [путь] Отчёт в формате JSON —
--visual-copy Печатная форма: копия PDF со штампами подписантов Отключено

Для присоединённой подписи достаточно указать файл подписи; для отсоединённой дополнительно указывается документ.

При --source-folder проверяются только файлы .sig, .p7s, .sgn, .sign, .bin, .pem и .pdf.

Без указания пути отчёты сохраняются рядом с проверяемыми файлами: отдельные PDF — как <файл>_report.pdf, общий — как merged_report_<дата и время>.pdf, JSON — как <файл>.verify-report.json. Существующие файлы не перезаписываются, а пути созданных отчётов возвращаются в итоговом JSON.

С --unsign подпись сначала проверяется, и только после успешной проверки извлекается исходный документ.

С --visual-copy для каждого проверенного PDF рядом с ним сохраняется печатная форма <файл>_штамп.pdf: документ без электронной подписи со штампом каждого подписанта. Подходит для PDF с PAdES-подписью, присоединённой подписи PDF и отсоединённой подписи, если в --document передан PDF. Вид штампа задают те же параметры --stamp-*, что и при подписи.

Недействительная подпись возвращает статус Error и ненулевой код завершения; отчёт при этом всё равно сохраняется.

Практический пример#

В этом примере проверяются подписи файлов в папке C:\Foldername, а отчёты сохраняются в папку C:\Reports.

"C:\Program Files\cryptoarm-sign\cryptoarm-sign.exe" verify ^
  --source-folder "C:\Foldername" ^
  --save-report-pdf "C:\Reports" ^
  --save-report-pdf-merged "C:\Reports"

Снятие подписи#

Команда: unsign

Команда извлекает исходный документ из присоединённой подписи.

cryptoarm-sign unsign \
  --source-file ./document.txt.sig \
  --unsigned-file-path ./out/document.txt
Параметр Описание По умолчанию
--enc <DER\|PEM\|BASE-64> Кодировка подписи DER
--unsigned-file-path <файл> Путь для извлечённого документа —
--folder-save-unsigned <папка> Папка результатов —

Снять можно только присоединённую подпись. Для отсоединённой исходный документ и так лежит отдельным файлом — проверить его можно командой verify --document.


Сертификаты#

Команды: certificates или cer

Команда выводит список сертификатов в формате JSON — из него берутся идентификаторы для параметров --cert, --sign-cert и --recipient-cert.

cryptoarm-sign certificates
cryptoarm-sign certificates --provider pgp

Та же команда перекодирует сертификаты и запросы на сертификат — см. Кодирование и декодирование файлов.


Работа с OpenPGP#

Для OpenPGP в каждой команде указывается --provider pgp, а сертификаты задаются отпечатками:

cryptoarm-sign sign \
  --provider pgp \
  --cert <отпечаток> \
  --source-file ./document.txt \
  --folder-save-signed ./out
Параметр Описание По умолчанию
--subkey <отпечаток> Подключ для подписи —
--armor Сохранить результат в текстовом виде (ASCII armor) Отключено
--archive Упаковать файлы в TAR внутри операции Отключено
--archive-name <имя> Имя TAR-архива —

Пароль закрытого ключа нужен для sign, sign-encrypt и decrypt. Способы передачи:

--passphrase "secret"
--passphrase-file ./passphrase.txt
CRYPTOARM_PGP_PASSPHRASE="secret" cryptoarm-sign sign --provider pgp ...

Если пароль не передан, а команда запущена в интерактивном терминале, приложение запросит его. Для encrypt и verify пароль не нужен и не запрашивается.

Отдельной команды archive для OpenPGP нет.


Результат и ошибки#

Результат выводится в stdout в формате JSON. Диагностика, запрос пароля и журналы идут в stderr.

Успешное выполнение:

{
  "method": "signAndEncrypt.outDirectResults",
  "status": "Completed",
  "results": [{ "id": "document.txt", "path": "/path/to/result.sig" }]
}

Ошибка:

{
  "method": "cli.error",
  "status": "Error",
  "error": {
    "code": "AMBIGUOUS_SOURCE",
    "message": "Specify only one of --source-file or --source-folder"
  }
}

При ошибке процесс возвращает ненулевой код завершения — его удобно проверять в скриптах.

Коды ошибок:

Код Что означает
MISSING_SOURCE Не указан --source-file или --source-folder
AMBIGUOUS_SOURCE Указаны оба источника сразу
AMBIGUOUS_OUTPUT Указаны и папка результата, и конкретный файл результата
INVALID_OUTPUT Файл результата указан в неподдерживаемом сценарии
INVALID_OPTION Параметр неприменим к выбранной операции
INVALID_PATH Входной путь отсутствует, имеет неверный тип или недоступен
UNSUPPORTED_PROVIDER Криптопровайдер не поддержан или недоступен
COMMAND_ERROR Ошибка разбора команды или параметров
OPERATION_ERROR Ошибка выполнения операции

Смотрите также#

Для повышения удобства работы и хранения данных веб-сайт CRYPTOARM.RU использует файлы COOKIE. Продолжая работу с веб-сайтом, Вы даете свое согласие на работу с этими файлами.