開發(fā)和調(diào)試的時候驅(qū)動程序還是很不穩(wěn)定會遇到各種問題,所以該形態(tài)下的驅(qū)動程序不適合也不能成功獲得微軟簽名,所以在該階段為了能讓驅(qū)動程序可以在windows電腦上可以正常運(yùn)行調(diào)試測試。為了能達(dá)到這個目標(biāo)我們就要對驅(qū)動進(jìn)行測試簽名,以方便我們工程師調(diào)試,下面我就介紹一下測試簽名的整個過程。
一、測試證書的創(chuàng)建
測試簽名需要測試證書。 生成測試證書后,可以使用它對多個驅(qū)動程序或驅(qū)動程序包進(jìn)行測試簽名。
本主題介紹如何使用MakeCert工具創(chuàng)建測試證書。 在大多數(shù)開發(fā)環(huán)境中,通過 MakeCert 生成的測試證書應(yīng)該足以測試測試簽名驅(qū)動程序或驅(qū)動程序包的安裝和加載。
以下命令行示例使用 MakeCert 來完成以下任務(wù):
· 創(chuàng)建名為 " 51whql .com (測試)" 的自簽名測試證書。 此證書對使用者名稱和證書頒發(fā)機(jī)構(gòu)(CA)使用相同的名稱。
· 將證書的副本放入名為whqlTest的輸出文件中。
· 將證書的副本放入名為PrivateCertStore的證書存儲中。 如果將測試證書放在PrivateCertStore中,則會將其與系統(tǒng)上的其他證書隔離開來。
使用以下 MakeCert 命令創(chuàng)建51whql .com (Test) 證書:
cmd
makecert -r -pe -ss PrivateCertStore -n CN=51whql.com(Test) -eku 1.3.6.1.5.5.7.3.3 WhqlTest.cer
其中:
· -R選項創(chuàng)建一個自簽名證書,該證書具有相同的頒發(fā)者和使用者名稱。
· -Pe選項指定可以導(dǎo)出與證書關(guān)聯(lián)的私鑰。
· -Ss選項指定包含測試證書(PrivateCertStore)的證書存儲的名稱。
· -N CN = option 指定證書的名稱("51whql.com")。 此名稱與SignTool工具一起用于標(biāo)識證書。
· EKU 選項將一個或多個以逗號分隔的增強(qiáng)型密鑰用法對象標(biāo)識符(oid)列表插入到證書中。 例如, -eku 1.3.6.1.5.5.7.3.2 插入客戶端身份驗證 OID。 有關(guān)允許的 Oid 的定義,請參閱 CryptoAPI 2.0 中的 Wincrypt.h 文件。
· WhqlTest是包含測試證書的副本的文件名,即 51whql.com (test)。 證書文件用于將證書添加到 "受信任的根證書頒發(fā)機(jī)構(gòu)" 證書存儲和 "受信任的發(fā)布者" 證書存儲中。
包含測試證書的證書存儲區(qū)將添加到 Windows 在創(chuàng)建證書存儲的開發(fā)計算機(jī)上為用戶帳戶管理的證書存儲列表。
開發(fā)人員只需要創(chuàng)建一個 MakeCert 測試證書來對開發(fā)計算機(jī)上的所有驅(qū)動程序包進(jìn)行簽名。
二、配置支持測試證書的電腦
管理員模式運(yùn)行cmd
輸入命令:bcdedit /set testsigning on
三、進(jìn)行測試簽名
創(chuàng)建或更新驅(qū)動程序包的編錄文件后,可以通過SignTool對該目錄文件進(jìn)行簽名。 簽名后,如果修改了驅(qū)動程序包的任何組件,則存儲在目錄文件中的數(shù)字簽名將會失效。
對編錄文件進(jìn)行數(shù)字簽名時,SignTool 會將數(shù)字簽名保存在目錄文件中。 SignTool 不會更改驅(qū)動程序包的組件。 但是,由于目錄文件包含驅(qū)動程序包的組件的哈希值,因此,只要這些組件將哈希到相同的值,就會保留目錄文件中的數(shù)字簽名。
SignTool 還可以向數(shù)字簽名添加時間戳。 時間戳允許確定創(chuàng)建簽名的時間,并在必要時支持更靈活的證書吊銷選項。
以下命令行說明了如何運(yùn)行 SignTool 來執(zhí)行以下操作:
· 對toastpkg.inf示例驅(qū)動程序包的tstamd64.cat目錄文件進(jìn)行測試簽名。
· 使用 51whql.com (測試 PrivateCertStore 中的) 證書來測試簽名。
· 通過時間戳頒發(fā)機(jī)構(gòu) (TSA) 來標(biāo)記數(shù)字簽名。
若要對 tstamd64.cat 目錄文件進(jìn)行測試簽名,請運(yùn)行以下命令行:
Signtool sign /v /fd sha256 /s PrivateCertStore /n 51whql.com(Test) /t http://timestamp.digicert.com tstamd64.cat
其中:
· Sign命令將 SignTool 配置為對指定的編錄文件 tstamd64.cat 進(jìn)行簽名。
· /V選項啟用詳細(xì)操作,其中,SignTool 顯示成功執(zhí)行和警告消息。
· /Fd選項指定用于創(chuàng)建文件簽名的文件摘要算法。 默認(rèn)值為 SHA1。
· /S選項指定包含測試證書的證書存儲 (*PrivateCertStore) *的名稱。
· /N選項指定在指定的證書存儲中安裝的 (51whql.com (測試) # B3的證書的名稱。
· /T選項指定了 http://timestamp.digicert.com 用于對數(shù)字簽名進(jìn)行時間戳的 TSA () 的 URL。