如何使用Microsoft Authenticode 或Microsoft Office 和VBA 签署Microsoft Vista 64 位元核心模式软体?

Solution ID:    SO5820    Updated:    02/05/2017

Problem

使用Microsoft Authenticode 或Microsoft Office 和VBA 签署Microsoft Windows 64 位元核心模式软体

Solution

64 位元版Microsoft Windows 需要使用核心模式程式码签章

若要使用Microsoft Authenticode 或Microsoft Office 和VBA 签署64 位元核心模式软体,您将需要下载并安装下列产品:

  1. Microsoft Windows SDK(必须安装以取得以下所需的工具)
  • pvk2pfx.exe
  • inf2cat.exe
  • signtool.exe  

      2. 微软​交叉凭证        请在这篇文章底部的附加文件下载此凭证,文件名是​ MSCV-VSClass3.cer   

      3. PVK 汇入(赛门铁克 不支援此工具)
          如果您的证书不在个人证书栏,使用PVK工具导入您的证书到个人证书栏​。
          从使用命令行界面signtool.exe 签署代码。 ​

如果想成功签署驱动程序文件,请确保遵循以下步骤:

1. 确保Microsoft验证签名证书被安装在用户的个人证书存储。 这可能需要pvk2pfx.exe和/或pvkimport.exe)
 
2. 使用inf2cat.exe验证驱动程序包INF文件,并​​创建一个有效的目录文件。如果成功,一个目录文件(*.cat)将被创建。

3. 使用signtool.exe签署目录(*.cat)和所有的驱动程序(的* .sys),如下列指令:

注意: CatFileName.cat 置换为你需要签署的文件名​这将需要针对所有的驱动和目录文件的运行​

注意:[Company Cert Name(公司凭证名称)」应该与您所属凭证的「凭证ISSUED TO」栏位完全一致。
 

SHA-1包含时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /s MY /n "Company Cert Name" /t http://timestamp.veriSign.com/scripts/timstamp.dll C:\CatFileName.cat

SHA-1不包含时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /s MY /n "Company Cert Name" C:\CatFileName.cat


SHA-256包含RFC3161时间戳

signtool sign /v /ac C:\Authenticode\MSCV-VSClass3.cer /s MY /n "Company Cert Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/ C:\CatFileName.cat


SHA-256不包含RFC3161时间戳

signtool sign /v /ac C:\Authenticode\MSCV-VSClass3.cer /s MY /n "Company Cert Name" /fd sha256 C:\CatFileName.cat

4. 确认文件被正确交叉签署,请使用以下语法,并寻找微软代码验证根(Microsoft Code Verification Root)":

signtool verify /v /kp "C:\driver.sys" 

 

此范例使用数个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必须有timstamp.dll档案名称才符合旧的MS-DOS命名惯例

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

          赛门铁克的SHA256 RFC3161 时间戳网址是 http://sha256timestamp.ws.symantec.com/sha256/ 


如需详细资讯,请参阅下列Microsoft 知识库文件:

Windows驱动程序工具包(WDK):​http://www.microsoft.com/whdc/driver/64bitguide.mspx 
使用SignTool签署一份文件:​http://msdn.microsoft.com/en-us/library/aa388170
交叉证书内核模式代码签名:​http://msdn.microsoft.com/en-us/library/windows/hardware/dn170454(v=vs.85).aspx

Microsoft 同时提供下列摘要版 签署程序:

问题- 使用signtool 和交叉凭证签署驱动程式时的问题
环境 - Vista 64 位元
解决方法- 按两下安装凭证,并允许根据凭证类型自动安装。如此您就不必担心凭证所在的凭证存放区为何

使用SIGNTOOL 时,使用经过x64 检查的建置环境或Server 2008 SDK 建置环境
仅交叉签署 .SYS 档。 CAT 档不需要交叉签署。载入时,系统只会查看SYS 档进行验证,而不会查看CAT 档(仅适用于64 位元系统)。

交叉签署时,请使用下列语法:注意:「Company Cert Name(公司凭证名称)」应该与您所属凭证的「凭证ISSUED TO」栏位完全一致。

下列签署语法使用一个证书存储在密码保护.PFX的文件

SHA-1包含时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p Password /n "Company Cert Name" /t http://timestamp.verisign.com/scripts/timstamp.dll "C:\driver.sys"

SHA-1不包含时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p Password /n "Company Cert Name" "C:\driver.sys"


SHA-256包含RFC3161时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p Password /n "Company Cert Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/ "C:\driver.sys"

SHA-256不包含RFC3161时间戳

signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p Password /n "Company Cert Name" /fd sha256 "C:\driver.sys"

提示​:

  • 确认程式已正确交叉签署,请使用下列语法
signtool verify /v /kp driver.sys​
  • 验证驱动程序被​特定的目录文件“签名”使用下面的命令:
signtool verify /v /kp  /c "C:\CatFileName.cat" "C:\driver.sys"
  • 为了有效减少启动​时间,签署所有驱动程序和目录文件。 ​

 

Attachment

MSCV-VSClass3[1].cer
2K • < 1 minute @ 56k, < 1 minute @ broadband