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