Microsoft Authenticode - 双代码签名SHA1和SHA256 算法的说明

General Information ID:    INFO2274    Updated:    02/09/2017

Description

本文提供关于如何使用单个Microsoft Authenticode证书对​微软的Windows软件​两个签名算法(SHA1和SHA256)的说明, 这在你需要对软件做不同算法签名的情况下是非常​有效的
例如,假设你想在Windows 7和Windows8运行你​软件,Windows 8支持SHA256算法创建的签名,Windows 7支持SHA256算法的签名,但需要从微软更新(请参阅Microsoft安全公告2949927)
在这种情况下,您可以使用SHA1和SHA2​证书将您的软件使用SHA1算法签名再追加SHA256签名算法

签名工具和系统需求

操作系统:

  • Windows 8.1, Windows 8


签名工具:​
下载并安装以下​工具​

所需证书:

  • SHA1 证书
  • SHA2 证书

        注意: 您需要同时拥有SHA1和SHA2的证书来进行双重签名。用SHA1证书来进行SHA1算法签名,SHA2证书进行SHA2算法签名。您无法使用一张证书来签署SHA1和SHA2算法。如果您只有一张SHA1或者SHA2证书,请按照以下链接来申请额外的证书。

申请额外算法证书

 


签名说明:

此范例使用数个SignTool 支援的参数:

  • Sign:设定工具签署名为CatFileName.cat 的目录档
  • /a: 自动选择最佳的签名证书。登录工具会找到所有满足规定条件,并选择一个有效时间最长的有效证。如果这个选项不存在,登录工具期望发现只有一个有效的签名证书。 ​
  • /v:指定verbose 选项,用于成功执行或警告讯息
  • /s:指定名为SPCCertificateStore 的凭证存放区(如果凭证汇入「个人存放区」中,则SPCCertificateStore 为My
  • /n:是指凭证中出现在「ISSUED TO」栏位的公司名称。
  • /t:指定数位签章将加上URL 所指的时间戳记授权单位(TSA) 发行的时间戳记
  • /f: 指定一个文件中的签名证书。仅支持个人信息交换(PFX)文件格式。 ​
  • /p: 如果该文件是受密码保护的PFX格式,使用/ p选项来指定密码。 ​
  • /as: 追加此签名。如果目前没有主签名,这一签名会成为主签名
  • /fd: 指定文件摘要算法用于创建文件签名。默认值为SHA1​
  • /tr: 指定RFC3161时间戳服务器的URL。如果该选项(或/t)不存在,则签名的文件不会被时间标记。如果时间戳失败会生成一条警告。此选项不能与/t 选项并用

注意SHA1时间戳网址是  http://timestamp.verisign.com/scripts/timstamp.dll

          SHA-1 RFC 3161 时间戳网址是 http://sha1timestamp.ws.symantec.com/sha1/timestamp

          SHA256 RFC3161 时间戳网址是 http://sha256timestamp.ws.symantec.com/sha256/ 

第1步:使用SHA1证书进行SHA1算法签名​

下面的语法使用存储在您的个人证书存储区的证书文件签署

包括时间戳:
 

signtool.exe sign /a /s MY /n "证书的公司名称​" /fd sha1 /t http://timestamp.verisign.com/scripts/timstamp.dll /v "<需要签名的文件名>"

 

第2步:使用SHA2证书追加SHA2算法签名

一旦应用程序文件在步骤1中做了SHA1签署,按照下面的步骤在相同的应用程序文件
来追加第二个SHA256算法签名。

下面的语法使用存储在您的个人证书存储区的证书文件签署

包括时间戳:

 

signtool.exe sign /a /s MY /n "证书的公司名称" /as /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/ /v "<需要签名的文件名> ;"


注意:如果你是使用存储在密码保护.PFX文件的证书文件来签名,只需使用参数 “/f PFX证书文件名.pfx/ p PFX密码” 来取代参数 "/a /s MY /n "证书的公司名称"  

第3步:验证签名

在您的Windows电脑​浏览已签名的应用程序文件

  1. 右击签名的应用程序文件
  2. 点击属性(Properties)
  3. 单击数字签名(Digital Signatures)标签


如果签名的过程是成功的,您应该看到在这个标签中所列的SHA1SHA256签名算法。

有关更多信息,请参阅以下微软知识库中的文章:​
https://msdn.microsoft.com/en-us/library/windows/ hardware/hh967734%28v=vs.85%29.aspx

 

Contact Support

Knowledge Center

Languages: