Выполнение операций в командной строке#
Научитесь работать с командной строкой (CLI) КриптоАРМ: подписывать, шифровать, расшифровывать и проверять файлы. В этом руководстве собраны команды, параметры и практические примеры для Windows, Linux и macOS.
💡 Примечание: инструкция рассчитана на технических специалистов — тех, кто настраивает автоматическую обработку документов. Для повседневной работы командная строка не нужна: те же операции выполняются в окне приложения и из контекстного меню Проводника.
Содержание:
- Общая информация
- Список команд
- Подпись
- Шифрование
- Подпись и шифрование
- Архивирование
- Кодирование и декодирование файлов
- Расшифрование
- Проверка подписи
- Снятие подписи
- Сертификаты
- Работа с OpenPGP
- Результат и ошибки
- Смотрите также
Общая информация#
CLI (Command Line Interface, интерфейс командной строки) — это способ управления приложением с помощью текстовых команд, вводимых через терминал или консоль.
Команды определяют, какие операции выполнить, с какими параметрами и над какими файлами.
CLI также подходит для автоматизации — выполнения операций без участия пользователя в составе систем обмена и скриптов .bat и .sh.
Важные замечания#
- Перед использованием CLI убедитесь, что приложение готово к работе с электронной подписью: сертификат установлен, лицензия активирована.
🔍 Подробную информацию о подготовке можно найти в инструкции Начало работы.
- Для подписи, расшифрования и PAdES сертификатами КриптоПро требуется лицензия КриптоАРМ. Проверка подписи, просмотр сертификатов, перекодирование, снятие подписи и объединение подписей лицензии не требуют.
- Перед вводом команды указывается путь до исполняемого файла, затем через пробел — команда и её параметры.
- Недействительный сертификат останавливает операцию: подтверждения в командной строке не запрашиваются, согласие передаётся флагом
--force. - Если
--pinне указан, КриптоПро может показать собственное системное окно ввода ПИН-кода.
Синтаксис команд#
Общий формат вызова:
командапишется первой, после пути до исполняемого файла;<текст>— значение параметра: путь к файлу, серийный номер сертификата, адрес службы и т. п.;[текст]— необязательный параметр: если его не задать, используется значение по умолчанию;- все команды и параметры пишутся через пробел.
Пути к исполняемым файлам#
Если каталог приложения не добавлен в 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-архив без подписи и шифрования.
| Параметр | Описание | По умолчанию |
|---|---|---|
--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 |
Расшифрование#
Команды: 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 [путь]]
Описание команды#
| Параметр | Описание | По умолчанию |
|---|---|---|
--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
Команда извлекает исходный документ из присоединённой подписи.
| Параметр | Описание | По умолчанию |
|---|---|---|
--enc <DER\|PEM\|BASE-64> | Кодировка подписи | DER |
--unsigned-file-path <файл> | Путь для извлечённого документа | — |
--folder-save-unsigned <папка> | Папка результатов | — |
Снять можно только присоединённую подпись. Для отсоединённой исходный документ и так лежит отдельным файлом — проверить его можно командой verify --document.
Сертификаты#
Команды: certificates или cer
Команда выводит список сертификатов в формате JSON — из него берутся идентификаторы для параметров --cert, --sign-cert и --recipient-cert.
Та же команда перекодирует сертификаты и запросы на сертификат — см. Кодирование и декодирование файлов.
Работа с 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 | Ошибка выполнения операции |
Смотрите также#
- Подпись и шифрование — те же операции в интерфейсе.
- Проверка и расшифрование — проверка подписей и расшифрование в приложении.
- Контекстное меню Проводника — запуск операций из Проводника.
- Активация лицензии — лицензии КриптоАРМ и КриптоПро CSP.
- API КриптоАРМ — вызов операций из внешних систем.