Перейти к основному содержимому

Клиентские инструменты

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

При этом SignTool CLI подходит для сценариев командной строки, скриптов и автоматизации; пользователи macOS также могут устанавливать и обновлять SignTool CLI или настольный клиент через Homebrew.

SignTool CLI​

SignTool CLI — это клиент командной строки для удалённой подписи кода, предоставляемый sslTrus. После установки имя исполняемого файла — signtool.

Он предоставляет следующие основные возможности:

ФункцияКомандаОписание
Подпись файлаsigntool signВыполняет удалённую подпись локального файла
Квота подписиsigntool quotaЗапрашивает оставшуюся и общую квоту подписи сертификата
Обновление клиентаsigntool updateЗапрашивает и устанавливает последнюю версию клиента для текущей платформы
Windows KSPsigntool kspУстанавливает и управляет Windows Key Storage Provider
Windows CSPsigntool cspУстанавливает и управляет Windows Cryptographic Service Provider

KSP и CSP относятся к способам интеграции Windows Provider. Подробнее о порядке использования см. в разделе Windows Provider.

Загрузка клиента​

SignTool CLI можно загрузить со страницы выпусков клиента sslTrus:

Страница выпусков клиента sslTrus

Страница выпусков предоставляет最新 установочные пакеты клиента для каждой платформы. В сценариях автоматизации также можно запрашивать информацию о последней версии через индекс версий latest.json.

Пользователи macOS также могут установить клиент напрямую через Homebrew, см. ниже macOS Homebrew.

Просмотр информации о клиенте​

После завершения установки можно выполнить:

signtool --help

Просмотр справки по команде.

Просмотр текущей версии клиента:

signtool --version

Информация о версии содержит сведения о версии клиента, ревизии сборки, платформе выполнения и времени сборки.

Учётные данные доступа​

Перед использованием службы удалённого подписания кода необходимо подготовить:

  • Access Key
  • Access Secret
  • Номер сертификата (Cert Code)

Access Key и Access Secret используются для доступа к службе удалённого подписания кода, а номер сертификата — для указания сертификата подписания кода, которым фактически выполняется подпись.

SignTool CLI может получать учётные данные через параметры команды или считывать их из переменных окружения:

export ACCESS_KEY="your-access-key"
export ACCESS_SECRET="your-access-secret"

Рекомендуется предоставлять Access Secret через переменные окружения, секреты CI/CD или другие безопасные способы управления учетными данными.

Не следует:

  • Добавлять Access Secret в репозиторий Git.
  • Вписывать его в общедоступные скрипты.
  • Выводить его в логи сборки.
  • Отправлять его в недоверенные сторонние системы.

Адрес удаленного сервиса​

По умолчанию SignTool CLI использует производственный адрес сервиса sslTrus, дополнительная настройка не требуется.

Если используется среда NICSRS (www.nicsrs.com), необходимо добавить в команду --address nicsrs:

signtool sign \
--address nicsrs \
--cert-code CERT_CODE \
--file app.exe

signtool quota и signtool update также поддерживают --address nicsrs.

Подпись файла​

С помощью signtool sign можно выполнять удалённую подпись кода непосредственно для локальных файлов.

Основная команда подписи:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

Если уже настроено:

ACCESS_KEY
ACCESS_SECRET

CLI SignTool 会自动读取相应的访问凭证。

默认使用 SHA-2 进行签名。

指定输出文件​

默认情况下,客户端不会直接覆盖原文件。

可以通过 --out 指定签名后的输出文件:

signtool sign \
--cert-code CERT_CODE \
--file app-unsigned.exe \
--out app-signed.exe

Перезапись исходного файла​

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

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--override=true

После включения --override результат подписи будет записан непосредственно обратно во входной файл.

При использовании в среде автоматизированной сборки следует убедиться, требуется ли на последующих этапах исходный файл или уже подписанный файл.

Указание описания программы​

Описание программы и URL можно включить в подпись Authenticode:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--desc "Example Application" \
--url "https://example.com"

SHA-1 и SHA-2​

SHA-2 включён по умолчанию:

signtool sign \
--cert-code CERT_CODE \
--file app.exe

Использовать только SHA-1:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=false

Одновременно включите SHA-1 и SHA-2:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--sha1=true \
--sha2=true

SHA-1 в основном используется для совместимости со старыми системами, в новых проектах обычно следует отдавать приоритет SHA-2.

Метка времени​

При подписании кода обычно рекомендуется одновременно добавлять доверенную метку времени.

SignTool CLI по умолчанию автоматически настраивает службу меток времени для подписи, также можно указать сервер меток времени через параметры:

  • --timestamp-rfc3161: RFC 3161 сервер меток времени, используемый для подписи SHA-2.
  • --timestamp: Authenticode сервер меток времени, используемый для подписи SHA-1.

Указание RFC 3161 сервера меток времени:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161=http://timestamp.acs.microsoft.com

Укажите сервер меток времени Authenticode:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp=http://timestamp.sectigo.com

Если необходимо отключить соответствующую временную метку, можно задать значение параметра пустым:

signtool sign \
--cert-code CERT_CODE \
--file app.exe \
--timestamp-rfc3161= \
--timestamp=

Сведения о протоколе штампов времени, адресах серверов и рекомендациях по выбору см. в справочных материалах.

Запрос квоты на подпись​

Использование:

signtool quota

Можно запросить квоту сертификатов подписи кода, доступную текущему токену доступа.

Выходные данные включают:

  • Номер сертификата.
  • Информация о сертификате.
  • Оставшееся количество подписей.
  • Общее количество подписей.

Если требуется вывод в формате JSON:

signtool quota --json

Также можно использовать сокращённую запись:

signtool quota -j

Конкретный способ подсчета количества подписей может различаться в зависимости от способа вызова CLI, KSP, Jarsigner или инструмента сборки. Подробные правила см. в Описание расчета количества подписей.

Обновление клиента​

SignTool CLI поддерживает проверку и установку последней версии для текущей платформы:

signtool update

В процессе обновления проверяются размер загруженного файла и SHA-256, чтобы подтвердить целостность файлов клиента.

Если SignTool CLI был установлен через Homebrew, рекомендуется и дальше управлять версиями через Homebrew, а не смешивать два способа обновления.

macOS Homebrew​

Пользователи macOS могут установить SignTool CLI или настольный клиент через официальный Homebrew Tap от sslTrus.

Установка Homebrew Tap​

Выполните:

brew tap ssltrus-official/tap
brew trust ssltrus-official/tap

После завершения можно установить соответствующий клиент.

Установка SignTool CLI​

Выполните:

brew install ssltrus-official/tap/code-sign-cli

После завершения установки можно выполнить:

signtool --version

Проверьте, корректно ли установлен клиент.

Название пакета в Homebrew:

code-sign-cli

Фактическое имя программы командной строки для установки:

signtool

Установка настольного клиента​

Установите настольный клиент для подписи кода sslTrus:

brew install --cask ssltrus-official/tap/code-sign-gui

Соответствующее имя Homebrew Cask:

code-sign-gui

Обновление клиента​

Если клиент установлен через Homebrew, рекомендуется выполнять обновление с помощью Homebrew.

Сначала обновите информацию о пакетах Homebrew:

brew update

Обновите SignTool CLI:

brew upgrade ssltrus-official/tap/code-sign-cli

Обновите настольный клиент:

brew upgrade --cask ssltrus-official/tap/code-sign-gui

Это позволяет локальной установке соответствовать метаданным пакета Homebrew.

Windows Provider​

Если ваш сценарий не предполагает прямого вызова SignTool CLI, а требует, чтобы Microsoft SignTool, Visual Studio, MSBuild, Advanced Installer или другое программное обеспечение Windows напрямую использовало закрытый ключ удалённого подписания кода, следует использовать Windows Provider.

sslTrus предоставляет:

  • KSP (Key Storage Provider):для Windows CNG.
  • CSP (Cryptographic Service Provider):для традиционного Windows CryptoAPI.

См. Windows Provider.

Автоматическое подписание в CI/CD​

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

Например, GitHub Actions может напрямую использовать sslTrus Code Sign Action:

- name: Sign files
uses: ssltrus-official/code-sign-action@v1
with:
access-key: ${{ secrets.SSLTRUS_ACCESS_KEY }}
access-secret: ${{ secrets.SSLTRUS_ACCESS_SECRET }}
cert-code: ${{ secrets.SSLTRUS_CERT_CODE }}
files: build/app.exe

GitHub Action поддерживает раннеры Linux, macOS и Windows и позволяет выполнять удалённое подписание указанных файлов непосредственно в процессе сборки.

Полную конфигурацию см. в разделе CI/CD и средства сборки.

Как выбрать​

Вы можете выбрать подходящий клиент или способ интеграции в зависимости от фактического способа использования:

СценарийРекомендуемый способ
Ручное подписание файлов в терминалеSignTool CLI
Массовый вызов подписания с помощью скриптовSignTool CLI
Проверка квоты подписания кодаSignTool CLI
Установка и обновление CLI в macOSHomebrew
Использование настольного клиента в macOSHomebrew
Прямой вызов удалённого закрытого ключа программами Windows, такими как Microsoft SignToolKSP
Программы с традиционным CryptoAPICSP
Автоматическое подписание в GitHub ActionsGitHub Actions
Самостоятельная разработка клиента подписанияAPI удалённого подписания кода

Если ваше приложение уже поддерживает Windows KSP, CSP или других стандартных провайдеров, обычно следует в первую очередь использовать соответствующий стандартный способ интеграции; если же требуется напрямую управлять процессом подписания, можно использовать SignTool CLI или API удалённого подписания кода.