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

Руководство по использованию командной строки SignTool

SignTool — это клиент командной строки для сервиса удалённого подписания кода sslTrus, предназначенный для выполнения операций подписания кода в терминале или автоматизированных скриптах.

Быстрый старт​

Ниже приведён самый простой пример команды подписания. Вы можете скопировать его и изменить в соответствии с комментариями.

# 视情况而定,是否需要开启调试模式
#export DEBUG=1

# 使用环境变量配置 AK、SK 以及证书订阅号
export SIGNTOOL_ACCESS_KEY='' SIGNTOOL_ACCESS_SECRET='' SIGNTOOL_CERT_CODE=''

# 签名
./signtool sign \
--dry-run \
--access-key=$SIGNTOOL_ACCESS_KEY \
--access-secret=$SIGNTOOL_ACCESS_SECRET \
--cert-code=$SIGNTOOL_CERT_CODE \
--file=app-unsigned.exe \
--out=app.exe \
--sha1=false \
--sha2=true \
--timestamp-rfc3161 http://timestamp.acs.microsoft.com

Подробное описание команд​

Перед началом работы вам необходимо подготовить следующие три элемента информации:

Просмотр справки​

Используйте параметр -h или --help, чтобы просмотреть полную справку по командам.

./signtool sign -h

Разбор основных параметров​

ПараметрСокращениеОбязательныйОписание и пример
--access-key-kДаКлюч доступа API. Также может быть задан через переменную окружения SIGNTOOL_ACCESS_KEY.
--access-secret-sДаСекрет доступа API. Также может быть задан через переменную окружения SIGNTOOL_ACCESS_SECRET.
--cert-code-cДаНомер подписки удалённого сервиса подписи кода, используется для указания сертификата подписи и биллинга.
--file-fДаПуть к файлу, который необходимо подписать. Например: -f “app.dll”.
--out-oНетПуть к выходному файлу. По умолчанию к исходному имени файла добавляется .signed. Важно: если файл уже существует, операция завершится ошибкой.
--overrideНетСледует ли перезаписывать файл по пути подписываемого файла. По умолчанию — false.
--sha1-1НетВключить подпись по алгоритму SHA1 (для совместимости со старыми системами).
--sha2-2НетВключить подпись по алгоритму SHA256 (современный стандарт, рекомендуется включать).
--nestНетИспользовать ли вложенную подпись. Если файл уже подписан, при --nest=true (по умолчанию) исходная подпись сохраняется и добавляется новая; при false старая подпись будет удалена. Сравнение результата: nest
--timestampНетURL сервера меток времени, используемый для подписи SHA1. Можно отключить, задав пустую строку "".
--timestamp-rfc3161НетURL сервера меток времени RFC 3161, используемый для подписи SHA256. Можно отключить, задав пустую строку "".
--desc-nНетОписание программы. Эта информация будет встроена в подпись и может отображаться в системном предупреждении безопасности, как показано ниже: desc
--url-uНетОфициальная ссылка на информацию о программе.
--verifyНетСразу после подписания проверить действительность подписи файла.
--dry-runНетТестовый режим. В этом режиме для проверки процесса подписания используется самоподписанный сертификат; соответствующие ключ доступа и номер подписки можно указать произвольно.

О параметрах с булевыми значениями​

Для параметров, принимающих значения true/false (например, --sha1, --nest), необходимо использовать формат параметр=значение; разделение пробелом не поддерживается.

  • Правильно: --sha1=true --sha2=false
  • Неправильно: --sha1 true --sha2 false