[普通]x64证书签名

作者(passion) 阅读(1072次) 评论(0) 分类( 软件)

Vista 之后的 64位os里 ,内核程序都需要签名才能加载。

 

要使x64 os加载自己的驱动,有3种方式 :

  1)、开机时--> F8--> "Disbale Driver Signature Enforcement"。

  2)、Test-signing 。ms为 程序开发者 提供的测试内核代码的方式。(用自签名的证书来签名内核代码)

  3)、向ms买个证书。

 

 

下面记录下,我使用 Test-signing 的过程。

 

  我的操作过程皆来自 MSDN : Kernel-Mode Code Signing Walkthrough (http://msdn.microsoft.com/en-us/library/windows/hardware/gg487328.aspx)里面下载的 KMCS_Walkthrough.doc 有较详细操作步骤。

 

PS : 记得执行下面的操作时 ,是使用 管理员 身份登录的 。以WDK7自带的例子passthru为例。(复制并改名为C:\_passthru_wdk7)

 

一、安装好 WDK。(我这里使用 WDK7)

二、打开命令提示符。 开始--> 程序-->Windows Driver Kits --> WDK 7600.16385.1-->Build Environments --> Windows Vista and Windows Server 2008 --> x64 Checked Build Environment 。(下面称此 命令提示符界面 为 cmd_wdk7 )

 

三、编译 _passthru_wdk7 。cmd_wdk7 进入目录 C:\_passthru_wdk7\driver\ ,build -czg 。

四、创建 (自签名测试)证书(doc P.9)。cmd_wdk7 进入目录 C:\_passthru_wdk7\driver\objchk_wlh_amd64\amd64\ ,输入命令

“makecert –r -pe -ss zcPrivateCertStore -n CN=zcContoso.com(Test) zcContosoTest.cer”

(这里可以看到 zcContosoTest.cer 生成了)

  然后查看 刚创建的证书,doc P.9 的 To use the MMC Certificates snap-in to view a certificate

 

五、(Using Inf2Cat to Create a Catalog File ==> doc P.11)

  1)、将 C:\_passthru_wdk7\driver\ 中的 netsf.inf 和 netsf_m.inf 复制到 C:\_passthru_wdk7\driver\objchk_wlh_amd64\amd64\ 中 。

  2)、修改 copy过来的 inf 。

     A)、两个 inf 中分别都要添加3行使之变为 :

......

   [Version]

   Signature  = "$Windows NT$"

   Class      = NetService

   ClassGUID  = {4D36E974-E325-11CE-BFC1-08002BE10318}

   Provider   = %Msft%

   DriverVer  =10/01/2002,6.0.5019.0

 

   CatalogFile.Ntx86 = zcPassthru_x86.cat

   CatalogFile.NtIA64 = zcPassthru_ia64.cat

   CatalogFile.NtAMD64 = zcPassthru_AMD64.cat


   [Manufacturer]

   %Msft% = MSFT,NTx86,NTia64,NTamd64

......

     B)、两个 inf 中的

DriverVer  =10/01/2002,6.0.5019.0 都改为 DriverVer  =10/01/2011,6.0.5019.0

  3)、cmd_wdk7 中执行命令 :

“Inf2cat.exe /driver:C:\_passthru_wdk7\driver\objchk_wlh_amd64\amd64\ /os:Server2008_x64”

(这里可以看到 zcPassthru_amd64.cat 生成了)

 

六、Test-Sign the Catalog File  ==> doc P.14

即 对这里的 zcPassthru_amd64.cat 进行签名。

Signtool sign /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll zcPassthru_amd64.cat

 

七、Install the Test Certificate in the Trusted Root Certification Authorities Certificate Store ==> doc P.15

将我们的证书安装到 受信任的根证书颁发机构 。

“certmgr.exe /add zcContosoTest.cer /s /r localMachine root”

然后可以查看 doc P.16

 

八、Test-Sign a Driver Image File by Using an Embedded Signature ==> doc P.18

对驱动程序进行签名。

Signtool sign /v /s zcPrivateCertStore /n zcContoso.com(Test) /t http://timestamp.verisign.com/scripts/timestamp.dll passthru.sys

”  ==> doc P.19

 

  可以对签名进行确认查看 doc P.20

 

ps : 上面命令中有时容易打错字母,需要注意,打错个别字母时查起来很费劲...

 

// ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==> ==>

 

   上面将该生成的都生成了(zcContosoTest.cer 、zcpassthru_amd64.cat),该签名的也签名了(zcpassthru_amd64.cat、passthru.sys) 。

   那么如何将签好名的东西装到测试用的机器上去呢?如下操作:

 

     ps : 测试机上新建文件夹 C:\_passthru_wdk7_cert ,这里的目标机是 Win2008_x64

 

一、To install the test certificates ==> doc P.22

安装 测试证书。

  1)、将 zcContosoTest.cer 复制到 C:\_passthru_wdk7_cert 中 ;一般目标机中 不会有 certmgr.exe ,则在 WDK7 的安装目录(C:\WinDDK\7600.16385\bin\amd64\)找到 certmgr.exe ,也复制到 测试机 C:\_passthru_wdk7_cert 中 。

  2)、管理员权限 打开 cmd ,进入目录 C:\_passthru_wdk7_cert 。(这里要确保是管理员身份的话,就直接找到“C:\WINDOWS\system32\cmd.exe”,然后右击“以管理员身份运行(A)”)

  3)、安装 zcContosoTest.cer 到本机的 Trusted Root Certification Authorities 。命令 :

“certmgr.exe /add zcContosoTest.cer /s /r localMachine root”

  4)、安装 zcContosoTest.cer 到本机的 Trusted Publishers 。命令 :

“certmgr.exe /add zcContosoTest.cer /s /r localMachine trustedpublisher”

 

     ps : 注意上面两步的作用地方是不一样的。(可用 certmgr.msc 查看)

 

  5)、管理员cmd --> “bcdedit.exe /set TESTSIGNING ON”  ==> doc P.24   --> 机器重启。

  6)、正常方式安装 签名过的 passthru.sys (安装时的警告还是会出现的...)


« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:drcom至尊版使用openwrt路由器拨号
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img