證明簽署 Windows 10+ 驅動程式
本文說明如何使用證明簽署來簽署驅動程式。 如需證明簽署的詳細資訊和需求,請參閱 Windows 10 證明簽署的驅動程式。
重要
自 2023 年 3 月 1 日起,已簽署以零售對象為目標的證明驅動程式不再發布在 Windows Update 上。 選取 CoDev 或 Test Registry Key / Surface SSRK 選項時,仍支持測試案例的已簽署驅動程式。
必要條件
閱讀並瞭解 Windows 10 證明簽署驅動程式的需求。
註冊硬體開發人員計劃。 如果您尚未註冊,請遵循如何註冊 Microsoft Windows 硬體開發人員計劃中的步驟。
您必須擁有擴充驗證 (EV) 程式代碼簽署憑證。 檢查您的組織是否已經有程式代碼簽署憑證。 如果您的公司已經有憑證,請提供憑證。 如果您的組織沒有憑證,您必須 購買 EV 憑證。
請遵循下載適用於 Windows 10 的套件和工具中所述的程式,下載並安裝 Windows 驅動程式套件 (WDK)。
(選擇性) 下載本文中使用的響應驅動程式範例 。
建立 CAB 檔案
在本節中,我們將逐步執行建立 CAB 檔案提交的程式。 我們將使用 響應驅動程式範例 來說明程式。
典型的 CAB 檔案提交必須包含下列專案:
驅動程式本身,例如Echo.sys
儀錶板用來協助簽署程式的驅動程式 INF 檔案。
用於偵錯資訊的符號檔。 例如 Echo.pdb。 Microsoft 自動化當機分析工具需要 .pdb 檔案。
目錄 .CAT 檔案是必要的,且僅用於公司驗證。 Microsoft 會重新產生類別目錄檔案,並取代任何提交的目錄檔案。
注意
CAB 檔案中的每個驅動程式資料夾都必須支援同一組架構。 例如,他們必須支援 x86、x64,或者它們全都必須同時支援 x86 和 x64。
參考驅動程式位置時,請勿使用 UNC 檔案共享路徑。\\\server\share
您必須使用對應的驅動器號,CAB 才能有效。
若要建立 CAB 檔案:
收集要登入單一目錄的二進位檔。 在這裡範例中,我們將使用
C:\\Echo
。以 管理員 istrator 開啟命令提示字元視窗。
輸入
MakeCab /?
以檢視 MakeCab 選項:C:\Echo> MakeCab /? Cabinet Maker - Lossless Data Compression Tool MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination] MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...] source File to compress. destination File name to give compressed file. If omitted, the last character of the source file name is replaced with an underscore (_) and used as the destination. /F directives A file with MakeCAB directives (may be repeated). Refer to Microsoft Cabinet SDK for information on directive_file. /D var=value Defines variable with specified value. /L dir Location to place destination (default is current directory). /V[n] Verbosity level (1..3).
準備 cab 檔案 DDF 輸入檔。 對於我們的 Echo 驅動程式,它看起來可能像這樣。
;*** Echo.ddf example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ; Specify the subdirectory for the files. ; Your cab file should not have files at the root level, ; and each driver package must be in a separate subfolder. .Set DestinationDir=Echo ;Specify files to be included in cab file C:\Echo\Echo.Inf C:\Echo\Echo.Sys
輸入下列命令以建立 CAB 檔案。
C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
MakeCab 的輸出應該會顯示所建立 CAB 檔案中的檔案數目。 在此情況下,應該會有兩個檔案。
C:\Echo> MakeCab /f Echo.ddf Cabinet Maker - Lossless Data Compression Tool 17,682 bytes in 2 files Total files: 2 Bytes before: 17,682 Bytes after: 7,374 After/Before: 41.70% compression Time: 0.20 seconds ( 0 hr 0 min 0.20 sec) Throughput: 86.77 Kb/second
在子目錄中找出 CAB 檔案
Disk1
。 您可以在 檔案總管 中選取 CAB 檔案,以確認它是否包含預期的檔案。
使用您的 EV 憑證簽署 CAB 檔案
使用 EV 憑證提供者建議的程式,以您的 EV 憑證簽署 CAB 檔案。 例如,若要使用 SHA256 憑證/摘要演演算法/時間戳簽署 CAB 檔案,請輸入下列命令:
C:\Echo> SignTool sign /ac "C:\MyEVCert.cer" /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
重要
請記得使用業界最佳做法來管理 EV 程式代碼簽署程式的安全性。
使用合作夥伴中心提交 EV 簽署的 Cab 檔案
移至 合作夥伴中心硬體儀錶板 ,並使用您的認證登入。
選取 [ 提交新硬體]。
在 [ 套件和簽署屬性 ] 區段中,輸入驅動程式提交的產品名稱。 此名稱可用來搜尋及組織驅動程式提交。
注意
如果您與另一家公司共用您的驅動程序,他們會看到此名稱。
讓這兩個測試簽署選項保持未核取狀態。
針對 [要求籤章],選取您要包含在驅動程式套件中的簽章。
向下移至頁面,然後選取 [ 提交]。
簽署程式完成時,請從硬體儀錶板下載已簽署的驅動程式。
驗證驅動程式是否已正確簽署
完成下列步驟,以確保驅動程式已正確簽署。
下載提交檔案之後,請解壓縮驅動程序檔案。
以 管理員 istrator 開啟命令提示字元視窗。
輸入下列命令,確認驅動程式已如預期般簽署。
C:\Echo> SignTool verify Echo.Sys
若要列出其他資訊,並讓 signtool 驗證具有多個簽章的檔案中的所有簽章,請輸入下列命令:
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
若要確認驅動程式的 EKU,請完成下列步驟。
開啟 Windows 檔案總管並找出二進位檔。 選取並按住檔案(或以滑鼠右鍵按兩下),然後選取 [ 屬性]。
在 [ 數字簽名] 索引 標籤上,選取 [簽章] 清單中的所列專案。
選取 [詳細數據],然後選取 [ 檢視憑證]。
在 [ 詳細數據] 索引標籤上,選取 [增強金鑰使用方式]。
當儀錶板辭職驅動程式時,會使用下列程式。
- 附加 Microsoft SHA2 內嵌簽章。
- 如果驅動程式二進位檔由客戶使用自己的憑證進行內嵌簽署,將不會覆寫這些簽章。
- 使用 SHA2 Microsoft 憑證建立並簽署新的目錄檔案。 此目錄會取代客戶提供的任何現有目錄。
在 Windows 10 上測試驅動程式
使用下列指示來安裝範例驅動程式。
以 管理員 istrator 開啟命令提示字元視窗。 移至驅動程式套件資料夾,然後輸入下列命令。
C:\Echo> devcon install echo.inf root\ECHO
確認驅動程式安裝程式不會顯示「Windows 無法驗證此驅動程式軟體的發行者」。Windows 安全性對話框。
使用多個驅動程式建立提交
若要同時提交多個驅動程式:
為每個驅動程式建立子目錄,如下所示。
準備參考子目錄的 CAB 檔案 DDF 輸入檔。 其看起來會像這樣:
;*** Submission.ddf multiple driver example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ;Specify files to be included in cab file ; First Driver .Set DestinationDir=DriverPackage1 C:\DriverFiles\DriverPackage1\Driver1.sys C:\DriverFiles\DriverPackage1\Driver1.inf ; Second driver .Set DestinationDir=DriverPackage2 C:\DriverFiles\DriverPackage2\Driver2.sys C:\DriverFiles\DriverPackage2\Driver2.inf
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應