• SignTool.exe(签名工具)


    水漂收集 -- SignTool.exe(签名工具)

     =============C#.Net 篇目录==============

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

    用法:signtool [command] [options] [file_name | ...]

    command

    指定要对文件执行的操作的四个命令之一(catdb、sign、Timestamp 或Verify)。

    options

    用于修改命令的选项。除了全局 /q 和 /v 选项之外,每个命令均支持一组唯一选项。

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

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

    file_name

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

    1. 四个命令

    catdb

    在目录数据库中添加或移除目录文件。目录数据库用于自动查找目录文件,并由 GUID 标识。

    sign

    对文件进行数字签名。数字签名可以避免文件被篡改,并且基于签名证书使用户能够验证签名者。

    Timestamp

    时间戳文件。

    Verify

    通过确定签名证书是否由受信任的颁发机构、是否已撤消了签名证书,以及签名证书对于特定策略是否有效验证文件的数字签名。

     

    1. catdb 命令选项

    /d

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

    /gGUID

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

    /r

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

    /u

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

     

    1. 签名命令选项(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)的使用情况。

     

    1. 时间戳命令选项(TimeStamp)

    /t URL

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

    /td alg

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

    /tr URL

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

     

    1. 验证命令选项(Verify)

    /a

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

    /ad

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

    /as

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

    /agCatDBGUID

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

    /cCatFile

    通过名称指定目录文件。

    /d

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

    /kp

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

    /oVersion(版本)

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

    /pa

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

    /pgPolicyGUID

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

    /ph

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

    /rRootSubjectName

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

    /tw

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

     

    1. 返回值

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

             0                执行成功。

    1                执行失败。

    2                执行伴随着警告完成。

     

    相关链接:

                 (2)强名称程序集与数字证书

                 数字签名|数字证书

    参考资料:

                 (MSDN)SignTool.exe(签名工具)

    分享到:
     



    作者:滴答的雨 
    出处:http://www.cnblogs.com/heyuquan/ 
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

    欢迎园友讨论下自己的见解,及向我推荐更好的资料。 
    本文如对您有帮助,还请多帮 【推荐】 下此文。 
    谢谢!!!  (*^_^*)
    技术群:185718116(广深莞·NET技术),欢迎你的加入
    技术群:(.NET研发交流(桂林)),欢迎你的加入

     
    http://www.cnblogs.com/heyuquan/archive/2012/04/01/2427974.html
  • 相关阅读:
    集群环境下定时调度的解决方案之Quartz集群
    Tomcat源码分析——类加载体系
    Linux:grep命令详解
    Linux:数据流重定向
    Linux:history命令详解
    Linux:echo命令详解
    Java 以空格分割字符串
    eclipse启动错误:An internal error occurred during: "reload maven project".
    MySQL表不能修改、删除等操作,卡死、锁死情况的处理办法。
    MySQL格式化日期参数
  • 原文地址:https://www.cnblogs.com/findumars/p/4836958.html
Copyright © 2020-2023  润新知