SignTool.exe (программа подписывания)

Sign Tool — это программа командной строки, которая выполняет цифровую подпись файлов, проверяет подписи файлов или создает штампы времени для файлов.

Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.

  • Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.

    – или –

    Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).

  • В командной строке введите следующее:

        signtool [command] [options] [file_name | ...]

Параметры

Аргумент

Описание

command

Одна из четырех команд (catdb, sign, Timestamp или Verify), указывающая операцию, которую требуется выполнить с файлом. Описание каждой из команд см. в следующей таблице.

options

Параметр, изменяющий команду. Кроме глобальных параметров /q и /v каждая команда поддерживает уникальный набор параметров.

file_name

Путь к файлу для подписи.

Программа Sign Tool поддерживает следующие команды: Каждая команда используется с отдельным набором параметров, которые перечислены в соответствующих подразделах.

Command

Описание

catdb

Добавляет файл каталога в базу данных каталогов или удаляет его из базы данных каталогов. Базы данных каталогов используются для автоматического поиска файлов каталогов и идентифицируются идентификаторами GUID. Список параметров, поддерживаемых командой catdb, см. в разделе Параметры команды catdb.

sign

Выполняет цифровую подпись файлов. Цифровые подписи обеспечивают защиту файлов от несанкционированного доступа и позволяют пользователям проверять, кем подписан файл, на основе сертификата подписи. Список параметров, поддерживаемых командой sign, см. в разделе Параметры команды Sign.

Timestamp

Устанавливает отметку времени для файлов. Список параметров, поддерживаемых командой TimeStamp, см. в разделе Параметры команды TimeStamp.

Verify

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

Следующие дополнительные параметры доступны для всех команд программы Sign Tool.

Дополнительный параметр Global

Описание

/q

Никакого вывода в случае успешного выполнения и минимальный вывод в случае сбоя выполнения.

/v

Подробный вывод в случае успешного выполнения или сбоя выполнения, а также предупреждающие сообщения.

Параметры команды catdb

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

Дополнительные параметры Catdb

Описание

/d

Указывает, что база данных каталогов умолчанию обновлена. Если не указан ни дополнительный параметр /d, ни /g, программа Sign Tool обновляет базу данных системных компонентов и драйверов.

/g GUID

Указывает, что база данных каталогов, заданная глобально уникальным идентификатором GUID обновлена.

/r

Удаляет указанные каталоги из базы данных каталогов. Если эта опция не указана, программа Sign Tool добавит указанные каталоги в базу данных каталогов.

/u

Указывает, что уникальное имя автоматически создается для добавляемых файлов каталогов. Если необходимо, файлы каталогов переименовываются, чтобы предотвратить конфликты имен с существующими файлами каталогов. Если этот дополнительный параметр не указан, программа Sign Tool перезапишет любой существующий каталог, имеющий то же имя, что и добавляемый каталог.

Параметры команды Sign

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

Параметр команды Sign

Описание

/a

Автоматически выбирает лучший сертификат подписи. Программа Sign Tool найдет все действительные сертификаты, которые удовлетворяют все указанные условия и выберет тот, который действителен в течение наиболее длительного времени. Если этот дополнительный параметр не указан, программа Sign Tool ожидает найти только один допустимый сертификат подписи.

/ac файл

Добавляет дополнительный сертификат из файла в блок подписи.

/c имя_шаблона_сертификата

Указывает имя шаблона сертификата (расширение Microsoft) для сертификата подписи.

/csp имя_CSP

Указывает поставщик служб шифрования (cryptographic service provider, CSP), содержащий контейнер защищенного ключа.

/d описание

Указывает описание подписанного содержимого.

/du URL-адрес

Указывает универсальный код ресурса (URL) для расширенного описания подписанного содержимого.

/f файл_сертификата_подписи

Задает сертификат подписи в файле. Если формат файла — Personal Information Exchange (PFX), и он защищен паролем, используйте дополнительный параметр /p для указания пароля. Если файл не содержит закрытых ключей, используйте параметры /csp и /k для указания CSP и имени контейнера закрытого ключа.

/fd

Указывает алгоритм дайджеста файла для использования при создании подписи файла. По умолчанию используется порт SHA1.

/i имя_поставщика

Указывает имя открываемого поставщика сертификата подписи. Это значение может быть подстрокой полного имени поставщика.

/kc имя_контейнера_закрытых_ключей

Задает имя контейнера закрытых ключей.

/n имя_субъекта

Указывает имя субъекта сертификата подписи. Это значение может быть подстрокой полного имени субъекта.

/nph

Если поддерживается, подавляет хэши страниц для исполняемых файлов. Значение по умолчанию определяется переменной среды SIGNTOOL_PAGE_HASHES и версией wintrust.dll.

/p пароль

Указывает, какой пароль следует использовать при открытии файлов PFX. (Используйте параметр /f для указания PFX-файла.)

/ph

Если поддерживается, генерирует хэши страниц для исполняемых файлов.

/r имя_корневого_субъекта

Указывает имя субъекта корневого сертификата, к которому должна быть установлена цепочка сертификата подписи. Это значение может быть подстрокой полного имени субъекта корневого сертификата.

/s имя_хранилища

Указывает хранилище для открытия при поиске сертификата. Если этот дополнительный параметр не указан, открывается хранилище My.

/sha1 хэш

Указывает хэш SHA1 сертификата подписи.

/sm

Указывает, что вместо пользовательского хранилища используется компьютерное хранилище.

/t URL-адрес

Задает URL-адрес сервера отметок времени. Если этот параметр (или параметр /tr) отсутствует, файл с подписью не получит отметку времени. Если установка отметки времени не удалась, подается предупреждающее сообщение. Данный параметр не может использоваться одновременно с параметром /tr.

/td алгоритм

Используется с параметром /tr, чтобы запросить дайджест-алгоритм, используемый сервером отметки времени RFC 3161.

/tr URL-адрес

Задает URL-адрес сервера отметок времени RFC 3161. Если этот параметр (или параметр /t) отсутствует, файл с подписью не получит отметку времени. Если установка отметки времени не удалась, подается предупреждающее сообщение. Данный параметр не может использоваться одновременно с параметром /t.

/u использование

Задает расширенное использование ключа (enhanced key usage, EKU) которое должно быть представлено в сертификате подписи. Значение использования может быть задано идентификатором объекта (OID) или строкой. По умолчанию используется "Code Signing" (подписывание кода) (1.3.6.1.5.5.7.3.3).

/uw

Определяет использование "Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6).

Параметры команды TimeStamp

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

Параметр TimeStamp

Описание

/t URL-адрес

Задает URL-адрес сервера отметок времени. Файл, получающий отметку времени, должен быть заранее подписан. Необходимо использовать параметр /t или /tr.

/td алгоритм

Запрашивает алгоритм дайджеста, используемый сервером отметок времени RFC 3161. /td используется вместе с параметром /tr.

/tr URL-адрес

Задает URL-адрес сервера отметок времени RFC 3161. Файл, получающий отметку времени, должен быть заранее подписан. Необходимо использовать параметр /tr или /t.

Проверка параметров команды

Проверка параметра

Описание

/a

Указывает, что все методы могут использоваться для проверки файла. Сначала выполняется поиск в базах данных каталогов для определения, подписан ли файл в каталоге. Если файл не подписан ни в одном каталоге, программа Sign Tool пытается проверить встроенную подпись файла. Этот дополнительный параметр рекомендуется при проверке файлов, которые могут быть подписаны или не подписаны в каталоге. К примерам таких фалов относятся файлы или драйверы Windows.

/ad

Находит каталог, используя базу данных каталогов по умолчанию.

/as

Находит каталог, используя базу данных каталога системных компонентов (драйверов).

/ag GUID_БД_каталогов

Находит каталог в базе данных каталога, указанной параметром CatDBGUID.

/c файл_каталога

Задает файл каталога по имени.

/d

Указывает, что программе Sign Tool следует печатать описание и URL-адрес описания.

/kp

Указывает, что проверка должна выполняться с использовыанием политики подписи работающего в режиме ядра драйвера.

/o версия

Проверяет файл по версии операционной системы. Версия имеет следующую форму: ИД_платформы:основная_версия.дополнительая_версия.номер_построения

/pa

Задает использование политики проверки подлинности Authenticode по умолчанию. Если дополнительный параметр /pa не указан, программа Sign Tool использует политики проверки драйверов Windows. Данный параметр не может использоваться одновременно с параметрами catdb.

/pg GUID_политики

Задает политику проверки параметром GUID. Параметр PolicyGUID соответствует параметру ActionID политики проверки. Данный параметр не может использоваться одновременно с параметрами catdb.

/ph

Указывает, что программа Sign Tool должен печатать и проверять хэш-значения страниц.

/r имя_корневого_субъекта

Указывает имя субъекта корневого сертификата, к которому должна быть установлена цепочка сертификата подписи. Это значение может быть подстрокой полного имени субъекта корневого сертификата.

/tw

Указывает, что должно выдаваться предупреждение, если подпись не имеет отметки времени.

Возвращаемое значение

Программа Sign Tool возвращает один из следующих кодов выхода, при прерывании.

Код выхода

Описание

0

Выполнение прошло успешно.

1

Сбой выполнения.

2

Выполнение завершено с предупреждениями.

Примеры

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

signtool catdb /v /u MyCatalogFileName.cat

Следующая команда подписывает файл автоматически с помощью лучшего сертификата.

signtool sign /a MyFile.exe

Следующая команда подписывает файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенный паролем.

signtool sign /f MyCert.pfx /p MyPassword MyFile.exe

Следующая команда цифровой подписью подписывает и ставит штамп времени на файл. Сертификат, используемый для подписания файла, хранится в файле PFX.

signtool sign /f MyCert.pfx /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe

Следующая команда подписал файл с помощью сертификата, расположенного в хранилище My, который имеет имя субъекта My Company Certificate.

signtool sign /n "My Company Certificate" MyFile.exe

Следующая команда подписывает элемента управления ActiveX и предоставляет информацию, отображаемую в Internet Explorer, когда пользователю предлагается установить элемент управления.

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html MyControl.exe

Следующая команда ставит штамп времени на файл, уже подписанный цифровой подписью.

signtool timestamp /t http://timestamp.verisgn/com/scripts.timstamp.dll MyFile.exe

Следующая команда проверяет, что файл был подписан.

signtool verify MyFile.exe

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

signtool verify /a SystemFile.dll

Следующая команда проверяет системный файл, подписанный в каталоге с именем MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll

См. также

Ссылки

Командная строка Visual Studio и пакета Windows SDK

Другие ресурсы

Инструменты .NET Framework

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены сведения об использовании командных строк Visual Studio и Windows SDK.

Улучшение информации.

Май 2010

Реорганизация; Обновленны команды и параметры.

Обратная связь от клиента.