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