签名工具是一个命令行工具,用于对文件进行数字签名,验证文件或时间戳文件中的签名。
备注
Microsoft Windows NT、Windows Me、Windows 98 或 Windows 95 中不支持签名工具。
signtool [command] [options] [file_name | ...]
参数
| 参数 | 说明 | 
|---|---|
command  | 
命令标志之一,用于指定要对文件执行的操作。  | 
options  | 
用于修改命令标志的选项标志之一。  | 
file_name  | 
要进行签名的文件的路径。  | 
签名工具支持下列命令。
| 命令 | 说明 | 
|---|---|
catdb  | 
在目录数据库中添加或移除目录文件。  | 
sign  | 
对文件进行数字签名。  | 
signwizard  | 
启动签名向导。只能为文件名命令行参数指定一个文件。  | 
timestamp  | 
时间戳文件。  | 
verify  | 
验证文件的数字签名。  | 
下列选项应用于 **catdb****命令。
| Catdb 选项 | 说明 | 
|---|---|
/d  | 
指定更新默认目录数据库。如果 /d和 /g 选项都未使用,则签名工具更新系统组件和驱动程序数据库。  | 
/g GUID  | 
指定更新由全局唯一标识符 (GUID) 标识的目录数据库。  | 
/r  | 
从目录数据库中移除指定的目录。如果未指定该选项,签名工具将向目录数据库添加指定的目录。  | 
/u  | 
指定为添加的目录文件自动生成唯一的名称。如有必要,将重命名目录文件,以避免与现有的目录文件发生冲突。如果未指定该选项,签名工具将重写与所添加的目录同名的任何现有目录。  | 
备注
目录数据库用于自动查找目录文件。
下列选项适用于sign命令。
| Sign 选项 | 说明 | 
|---|---|
/a  | 
自动选择最佳的签名证书。如果未指定该选项,签名工具仅查找一个有效的签名证书。  | 
/c CertTemplateName  | 
指定用于对证书进行签名的证书模板名(一个 Microsoft 扩展)。  | 
/csp CSPName  | 
指定包含私钥容器的加密服务提供程序 (CSP)。  | 
/d Desc  | 
指定已签名内容的说明。  | 
/du URL  | 
指定已签名内容的更详细说明的统一资源定位器 (URL)。  | 
/f SignCertFile  | 
指定文件中的签名证书。如果文件是个人信息交换 (PFX) 格式且受密码保护,则使用 /p 选项来指定密码。如果文件不包含私钥,则使用 /csp 和 /k 选项来分别指定 CSP 和私钥容器名。  | 
/i IssuerName  | 
指定签名证书的颁发者的名称。该值可以是整个颁发者名称的子字符串。  | 
/k PrivKeyContainerName  | 
指定私钥容器名。  | 
/n SubjectName  | 
指定签名证书的主体的名称。该值可以是整个主体名称的子字符串。  | 
/p 密码  | 
指定打开 PFX 文件时使用的密码。可以通过使用 /f 选项来指定 PFX 文件。  | 
/r RootSubjectName  | 
指定签名证书必须链接到的根证书的主体名称。该值可以是根证书的整个主题名称的子字符串。  | 
/s StoreName  | 
指定要在搜索证书时打开的存储区。如果未指定该选项,则打开“我的存储区”。  | 
/sha1 哈希  | 
指定签名证书的 SHA1 哈希。  | 
/sm  | 
指定使用一个计算机存储区,而不是使用用户存储区。  | 
/t URL  | 
指定时间戳服务器的 URL。如果该选项不存在,将不会对签名文件执行时间戳操作。如果时间戳操作失败,将生成一个警告。  | 
/u 用法  | 
指定签名证书中必须存在的增强型密钥用法 (EKU)。可以通过 OID 或字符串指定该用法的值。默认用法为“代码签名”(1.3.6.1.5.5.7.3.3)。  | 
下列选项适用于 **timestamp 命令。
| Timestamp 选项 | 说明 | 
|---|---|
/t URL  | 
必选。指定时间戳服务器的 URL。要执行时间戳操作的文件必须在以前已经进行了签名。  | 
下列选项适用于 verify 命令。
| Sign 选项 | 说明 | 
|---|---|
/a  | 
指定可以使用所有方法来验证文件。首先,搜索目录数据库以确定是否在目录中对文件进行了签名。如果未在任何目录中对文件进行签名,签名工具将尝试验证文件的嵌入签名。验证可以或不能在目录中进行签名的文件时,建议使用该选项。可以或不能签名的文件示例包括 Windows 文件或驱动程序。  | 
/ad  | 
使用默认的目录数据库查找目录。  | 
/as  | 
使用系统组件(驱动程序)目录数据库查找目录。  | 
/ag CatDBGUID  | 
在由 GUID 标识的目录数据库中查找目录。  | 
/c CatFile  | 
通过名称指定目录文件。  | 
/o Version  | 
通过操作系统版本验证文件。version 参数的格式为 PlatformID:VerMajor.VerMinor.BuildNumber  | 
/pa  | 
指定使用默认的身份验证策略。如果未指定 /pa 选项,签名工具将使用 Windows 驱动程序验证策略。此选项不能与 catdb 选项一起使用。  | 
/pg PolicyGUID  | 
通过 GUID 指定验证策略。GUID 对应于验证策略的 ActionID。此选项不能与 catdb 选项一起使用。  | 
/r RootSubjectName  | 
指定签名证书必须链接到的根证书的主体名称。该值可以是根证书的整个主题名称的子字符串。  | 
/tw  | 
指定如果签名没有时间戳,则生成一个警告。  | 
下列选项适用于所有签名工具命令。
| 全局选项 | 说明 | 
|---|---|
/q  | 
执行成功时不生成输出,执行失败时生成最少的输出。  | 
/v  | 
执行成功、执行失败或产生警告消息时生成详细输出。  | 
备注
签名工具要求本地计算机上安装了 CAPICOM 2.0 可再发行程序。可以从 https://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm 获得 CAPICOM 2.0 可再发行程序。
签名工具的 verify 命令确定签名证书是否由受信任的颁发机构颁发、是否已撤消了签名证书,以及签名证书对于特定策略是否有效(此项可选)。
执行成功时,签名工具返回退出代码 0;执行失败时,签名工具返回退出代码 1;执行完毕并给出警告时,签名证书返回退出代码 2。
示例
此命令演示如何使用最佳证书自动对文件进行签名。
signtool sign /a MyFile.exe