2012-12-19 119 views
3

自從WinXP以來我一直沒有使用Windows DDK(現在的WDK),並且我注意到一些大的變化。Win7 64bit傳統nt4驅動程序簽署問題

我正在開發一個傳統NT4過濾驅動程序(不.inf和不.cat)與最新的Win7 DDK,我的環境是

Windows 7 64bit 
Visual Studio 2010 
WinDDK v7600.16385.1 
VisualDDK plugin for VS (latest version) 

我有問題自簽署該驅動程序,因爲我還在發展我沒有(也不知道如何獲得)適當的WHQL證書,因此我正在執行我在網上找到的一個程序。

@echo off 

set SIGNTOOL="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\signtool.exe" 
set MAKECERT="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\makecert.exe" 
set PVK2PFX="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\pvk2pfx.exe" 
set CERTPVK="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.pvk" 
set CERTPFX="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.pfx" 
set CERT="C:\Users\myself\Desktop\testdriver\avtxagent\package\mycompanynametest.cer" 
set DRIVER="C:\Users\myself\Desktop\testdriver\avtxagent\package\avtxagent.sys" 
set CERTSUBJ="mycompanyname (test)" 

del *.cer *.pfx *.pvk 
cls 
%MAKECERT% -r -n "CN=mycompanyname (test)" -sv %CERTPVK% %CERT% 
%PVK2PFX% -pvk %CERTPVK% -spc %CERT% -pfx %CERTPFX% 
pause 
cls 
%SIGNTOOL% sign /v /f %CERTPFX% /t "http://timestamp.verisign.com/scripts/timestamp.dll" %DRIVER% 
pause 
cls 
:: verification 
%SIGNTOOL% verify /pa /v %DRIVER% 

pause 

基本上我做的是生成證書每次(我已經有一個證書試圖產生只有一次,還是同樣的問題),我的簽名驅動程序,然後試圖驗證簽名。 在這最後一步,驗證,我得到的問題:

SignTool Error: A certificate chain processed, but terminated in a 
       root certificate which is not trusted by the trust provider. 

顯然,當我嘗試安裝,然後啓動舊的驅動程序以編程方式,並與SC,我得到的錯誤:

[SC] CreateService SUCCESS 
[SC] StartService FAILED 577: 

Windows cannot verify the digital signature for this file. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. 

如果我遵循本指南http://technet.microsoft.com/en-us/library/cc754841.aspx並將證書導入Trusted Certification內部,驗證過程將順利進行,但我會從sc獲得相同的錯誤。

我在做什麼錯?而且,有沒有人可以解釋我爲了在生產環境中使用適當的證書需要做些什麼,因爲文檔有點缺乏?

回答

1

你並不需要一個WHQL簽名簽署的內核模式驅動程序。您需要的是從GlobalSign或Verisign購買的代碼簽名證書(,其他人不會工作)。如果有,請使用此代碼簽名證書爲您的驅動程序簽名。注意:您還需要包含一個cross-certificate from Microsoft

或者(僅用於調試目的),您可以在測試模式下加載系統,其中未檢查簽名。要做到這一點,您需要在系統引導過程中按F8並在菜單中選擇相應的選項。

0

這很可能是由於您用來生成證書的專用CA不受系統信任。這些看上去相關:

http://technet.microsoft.com/en-us/library/dd441378(office.13).aspx

http://technet.microsoft.com/en-us/library/cc754841.aspx

+0

剛剛導入的.cer文件到受信任的根證書頒發機構的分支並沒有什麼改變。 –

+0

根據我讀過的內容,您的系統充當CA.必須信任CA才能使其生成的證書可信。您必須找到一種將您的計算機添加爲自己的可信CA的方法。 –

+0

與.pfx文件的驗證進行得很順利,但我從sc得到相同的錯誤 –

0

你需要安裝自簽名證書爲受信任的根證書頒發機構爲受信任的發佈者本地計算機存儲(通常,certmgr.msc節目和管理您的用戶帳戶的商店,而不是):

certmgr.exe -add <your.cer> -s -r localMachine ROOT 
certmgr.exe -add <your.cer> -s -r localMachine TRUSTEDPUBLISHER 

正如您所看到的,每次生成新證書都非常不切實際。您寧願生成一次然後重新使用。

(的http://winitpro.ru/index.php/2014/05/08/kak-samostoyatelno-podpisat-drajver-dlya-windows-7/禮貌;達到同樣的效果說明在https://technet.microsoft.com/en-us/library/dd919238(v=ws.10).aspx