签名工具 SignTool.exe

.NET Framework 4.5 

签名工具是一个命令行工具,用于对文件进行数字签名,验证文件和时间戳文件中的签名。

安装 Visual Studio 和 Windows SDK 时会自动安装此工具。要运行工具,我们建议您使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也称 CMD Shell)。您可以使用这些实用程序轻松运行工具,而不需要导航到安装文件夹。有关更多信息,请参见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

要进行签名的文件的路径。

签名工具支持下列命令。 每个命令使用不同的选项集,这些选项集被列在它们相应的节中。

Command

说明

catdb

在目录数据库中添加或移除目录文件。 目录数据库用于自动查找目录文件,并由 GUID 标识。有关catdb 命令支持的选项的列表,请参见catdb 命令行选项。

sign

对文件进行数字签名。 数字签名可以避免文件被篡改,并且基于签名证书使用户能够验证签名者。有关sign 命令支持的选项的列表,请参见签名命令选项。

Timestamp

时间戳文件。 有关TimeStamp 命令支持的选项的列表,请参见时间戳命令选项。

Verify

通过确定签名证书是否由受信任的颁发机构、是否已撤消了签名证书,以及签名证书对于特定策略是否有效(此项可选)验证文件的数字签名。有关Verify 命令支持的选项的列表,请参见验证命令选项。

下列选项适用于所有签名工具命令。

全局选项

说明

/q

执行成功时不生成输出,执行失败时生成最少的输出。

/v

执行成功、执行失败或产生警告消息时生成详细输出。

catdb 命令行选项


下表列出了可用于 catdb 命令的选项。

Catdb 选项

说明

/d

指定更新默认目录数据库。 如果/d和/g 选项都未使用,则签名工具更新系统组件和驱动程序数据库。

/gGUID

指定更新由全局唯一标识符 (GUID) 标识的目录数据库。

/r

从目录数据库中移除指定的目录。 如果未指定该选项,“签名工具”将向目录数据库添加指定的目录。

/u

指定为添加的目录文件自动生成唯一的名称。 如有必要,重命名目录文件,以避免与现有的目录文件发生冲突。如果未指定该选项,签名工具将覆盖与所添加的目录同名的任何现有目录。

签名命令选项


下表列出了可用于 sign 命令的选项。

签名命令选项

说明

/a

自动选择最佳的签名证书。 签名工具将查找满足所有指定条件的所有有效的证书,并选择有效时间最长的一个。如果未指定该选项,签名工具仅查找一个有效的签名证书。

/ac  文件

将文件中的其他证书添加到签名块。

/c CertTemplateName

指定用于对证书进行签名的证书模板名(一个 Microsoft 扩展)。

/csp CSPName

指定包含私钥容器的加密服务提供程序 (CSP)。

/d Desc

指定已签名内容的说明。

/du URL

为已签名文档的详细说明指定统一资源定位器 (URL)。

/f SignCertFile

指定文件中的签名证书。 如果文件是个人信息交换 (PFX) 格式且受密码保护,则使用/p 选项来指定密码。如果文件不包含私钥,则使用/csp 和/k 选项指定 CSP 和私钥容器名。

/fd

指定将用于创建文件签名的文件摘要算法。 默认值为 SHA1。

/i IssuerName

指定签名证书的颁发者的名称。 该值可以是整个颁发者名称的子字符串。

/kc PrivKeyContainerName

指定私钥容器名。

/n SubjectName

指定签名证书的主体的名称。 该值可以是整个主体名称的子字符串。

/nph

如果支持,为可执行文件取消页面的哈希。 默认值由 SIGNTOOL_PAGE_HASHES 环境变量和 wintrust.dll 版本决定。

/p Password(密码)

指定打开 PFX 文件时使用的密码。 (使用/f 选项指定 PFX 文件。)

/ph

如果支持,则生成执行文件的页面哈希。

/r 根主题名称

指定签名证书必须链接到的根证书的主体名称。 该值可以是根证书的整个主题名称的子字符串。

/s StoreName

指定要在搜索证书时打开的存储区。 如果未指定该选项,则打开My 存储。

/sha1 Hash(哈希)

指定签名证书的 SHA1 哈希。

/sm

指定使用一个计算机存储区,而不是使用用户存储区。

/t URL

指定时间戳服务器的 URL。 如果该选项(或/tr)不存在,将不会对签名文件执行时间戳操作。如果时间戳操作失败,将生成一个警告。此选项不能与/tr 选项一起使用。

/td alg

与 /tr 选项一起使用,以请求 RFC 3161 时间戳服务器使用的摘要算法。

/tr URL

指定 RFC 3161 时间戳服务器的 URL。 如果该选项(或/t)不存在,将不会对签名文件执行时间戳操作。如果时间戳操作失败,将生成一个警告。此选项不能与/t 选项一起使用。

/u Usage(用法)

指定签名证书中必须存在的增强型密钥用法 (EKU)。 可以通过 OID 或字符串指定该用法的值。默认用法为“代码签名”(1.3.6.1.5.5.7.3.3)。

/uw

指定“Windows 系统组件验证”(1.3.6.1.4.1.311.10.3.6)的使用情况。

时间戳命令选项


下表列出了可用于 TimeStamp 命令的选项。

TimeStamp 选项

说明

/t URL

指定时间戳服务器的 URL。 要执行时间戳操作的文件必须在以前已经进行了签名。需要/t 或/tr 选项。

/td alg

请求 RFC 3161 时间戳服务器使用的摘要算法。 /td与/tr 选项一起使用。

/tr URL

指定 RFC 3161 时间戳服务器的 URL。 要执行时间戳操作的文件必须在以前已经进行了签名。需要/tr 或/t 选项。

验证命令选项


验证选项

说明

/a

指定可以使用所有方法来验证文件。 首先,搜索目录数据库以确定是否在目录中对文件进行了签名。如果未在任何目录中对文件进行签名,签名工具将尝试验证文件的嵌入签名。验证可以或不能在目录中进行签名的文件时,建议使用该选项。这些文件的示例包括 Windows 文件或驱动程序。

/ad

使用默认的目录数据库查找目录。

/as

使用系统组件(驱动程序)目录数据库查找目录。

/ag CatDBGUID

在目录数据库中通过 CatDBGUID 标识查找目录。

/c CatFile

通过名称指定目录文件。

/d

说明签名工具应打印描述和描述的 URL。

/kp

指定应使用内核模式驱动程序签名策略进行验证。

/o Version(版本)

通过操作系统版本验证文件。 版本具有如下格式:PlatformID:VerMajor.VerMinor.BuildNumber

/pa

说明应使用默认认证码验证策略。 如果未指定/pa 选项,“签名工具”将使用 “Windows 驱动程序验证策略”。此选项不能与catdb 选项一起使用。

/pg PolicyGUID

通过 GUID 指定验证策略。 PolicyGUID 对应于验证策略的 ActionID。此选项不能与catdb 选项一起使用。

/ph

说明签名工具应打印并验证页数哈希值。

/rRootSubjectName

指定签名证书必须链接到的根证书的主体名称。 该值可以是根证书的整个主题名称的子字符串。

/tw

如果签名没有时间戳,则指定应该生成的一个警告。

返回值


当其终止时,签名工具返回以下的退出代码之一。

退出代码

说明

0

执行成功。

1

执行失败。

2

执行伴随着警告完成。

示例


以下命令将目录文件 MyCatalogFileName.cat 添加到系统组件和驱动程序数据库中。如有防止替换现有的名称为MyCatalogFileName.cat 的目录文件的必要,/v 选项会生成唯一的名称。

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.verisign.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.verisign.com/scripts/timstamp.dll MyFile.exe

以下命令验证已经签名的文件。

signtool verify MyFile.exe

以下命令验证可能已经在目录中签过名的系统文件。

signtool verify /a SystemFile.dll

以下命令验证在名为 MyCatalog.cat 目录中已签字的系统文件。

signtool verify /c MyCatalog.cat SystemFile.dll

文章来自  http://msdn.microsoft.com/zh-cn/library/vstudio/8s9b9yaz.aspx

数字签名工具signtool相关推荐

  1. [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文讲解了i ...

  2. 签名工具 signtool.exe 参数简介

    签名工具是一个命令行工具,用于对文件进行数字签名,以及验证文件和时间戳文件中的签名. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用 Visual Studio 开发人 ...

  3. 微软数字签名工具--SigCheck的应用

    我们可以利用微软官方提供的命令行工具:SigCheck.exe,这个命令行工具可以在命令提示符下直接检查文件的数字签名,操作也是相当的简单.请访问微软官网,单击"Download Sigch ...

  4. 数字签名工具 linux,制作只属于自己的数字签名在线工具与控件木马

    看见没?图中上面那个截止日期为9999-1-1的"冰狐浪子"就是刚才自己生成的证书,把它"导出"为icyfox.cer,好啦,最重要的第一步已经完成! 第二步: ...

  5. Linux gpg --加密和数字签名工具

    gpg [功能] GPG是加密和数字签名的免费工具,大多用于加密信息的传递.除了仅用密码加密外,GPG最大的不同是提供了"公钥/私钥"对.利用你的"公钥"别人加 ...

  6. DigitalSignCheck —— 批量验证微软数字签名工具

    1,简介 有时候发布产品版本时,需要确认每个可执行文件已正常签上了微软签名.否则有时候可能导致被杀软KO掉,而工作不正常呢.并且这也代表着你的文件版权. 但是通常我们查看文件签名,是一个个右击文件在& ...

  7. SSL数字证书(一)CA、根证书与数字证书

    数字证书原理(〇)认识SSL SSL数字证书(一)CA.根证书与数字证书 SSL数字证书(二)使用makecert.exe签发证书 SSL数字证书(三)使用 openssl 生成证书 网络安全无疑是现 ...

  8. 为发布的windows软件解决 “发布者:未知 ”问题

    用户安装我们发布的程序时,弹出UAC提示框: 您想允许来自未知发布者的以下程序对此计算机进行更改吗? 发布者:未知 如果安装程序出现该提示,很多用户就不会安装程序了. 从发布者的角度要解决这个问题,就 ...

  9. [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文 &qu ...

  10. vs自带工具进行代码数字签名方法

    数字签名(代码签名)流程 Authenticode : 这里翻译为数字认证代码.  code sign : 字面的翻译为代码签名,但是通常的我们称为数字签名,以下的文中均称为数字签名. 一 数字认证码 ...

最新文章

  1. 通过Keepalived实现Redis Failover自动故障切换功能[实践分享] =转载
  2. laravel框架图片上传
  3. 大厂的 SDK 写法,偷学到了!
  4. Spring Cloud 服务安全连接 1
  5. B站举办2021年度百大UP主盛典 科技知识类UP主占比翻倍
  6. 德媒:外景代替了现实 中国人拍婚纱照跑到很远地方
  7. 面试C++后台开发考察哪些问题?
  8. 【298天】每日项目总结系列036(2017.11.30)
  9. java 网络编程 总结篇
  10. 胡昊—第7次作业--访问权限、对象使用
  11. Leet Code OJ 刷题顺序参考
  12. 【C语言】剖析函数递归(2)
  13. javaSwing ATM
  14. 3D数学基础——Rotator类的C++实现
  15. 计算机歌曲数我的一个道姑朋友,LON《我的一个道姑朋友》[MP3-320K/11.2M]
  16. Python采集二手房源数据信息 基础版, 多线程版
  17. FusionInsight安全组件FAQ
  18. 我的驾驶证被扣30分,两个3分,4个6分,我应该怎么处理呢?
  19. 【招生目录和招生简章】中国科学院大学 中科院沈阳计算所 中国矿业大学 广州大学 北京人民公安大学...
  20. iOS调用银联安全助手控件支付

热门文章

  1. html5移动端单视频播放代码,js移动端视频播放代码
  2. WebGrid Enterprise免费下载
  3. python 快速排名发包_2019年SEO快速排名发包技术及原理 - 立金哥
  4. 黑客帝国 数字雨 屏幕保护程序 linux ubuntu
  5. asp html5留言板,ASP.NET MVC 开发实例:简单留言板的开发
  6. 【牛腩】FreeTextBox
  7. (转载)关注——软件界首例 暴风影音宣布召回1.2亿播放器软件
  8. 系统集成项目管理工程师计算题(成本管理计算)
  9. Unity学习笔记——博客中有游戏练习案例
  10. ubuntu20.04 推荐翻译软件