本文說明如何使用證明簽署來簽署驅動程式。
備註
針對零售族群的認證驅動程式不會在 Windows Update 上發布。 當您測試使用
先決條件
閱讀並理解測試情境中簽署認證 驅動程式 的要求。
報名硬體開發者計畫。 如果你還沒註冊,請依照註冊Microsoft Windows硬體開發計畫的步驟。
您必須擁有延伸驗證(EV)程式代碼簽署憑證。 檢查您的組織是否已經有程式代碼簽署憑證。
如果您有現有的憑證,請讓憑證可供使用。
如果您的組織沒有憑證, 請購買 EV 憑證。
依照 描述的流程下載並安裝 Windows 評估與部署套件(Windows ADK)下載並安裝 Windows ADK。
(可選)下載本文中使用的 Echo 驅動範例,該範例可於 GitHub 取得。
建立 CAB 檔案
以下步驟透過使用 Echo 驅動程式範例來說明,如何提交 CAB 檔案。
典型的 CAB 檔案提交必須包含下列元件:
驅動程式本身(例如, Echo.sys)。
控制面板使用的驅動程式 INF(.inf)檔案,以促進簽署過程。
用於偵錯資訊的符號檔,例如 Echo.pdb。 .pdb 檔案是Microsoft自動化當機分析工具所必需的。
目錄(.cat)檔案是必須的,僅用於公司驗證。 Microsoft 會重新產生目錄檔案並替換先前提交的目錄檔案。
備註
CAB 檔案中的每個驅動程式資料夾都必須支援同一組架構。 例如,它們必須支援 x86、x64,或者必須全部支援 x86 和 x64。
當您參考驅動程式位置 (\server\share) 時,請勿使用 UNC 檔案共享路徑。 您必須使用映射的磁碟機代號,CAB 才能有效。
若要建立 CAB 檔案,請遵循下列步驟:
將待簽署的二進位檔案彙整在單一目錄中。 此範例會使用
C:\Echo資料夾。使用系統管理員許可權開啟命令提示字元視窗。
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 檔案
下一步是用你的電動車證明簽署 CAB 檔案。
使用 EV 憑證提供者建議的流程。 例如,要以 SHA256 時間戳記簽署 CAB 檔案,請輸入以下指令:
C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
這很重要
請記得使用業界最佳做法來管理 EV 程式代碼簽署程式的安全性。
請將電動車簽署的 CAB 檔案提交至 Partner Center
簽署 CAB 檔案後,您就可以在 Partner Center 提交檔案:
前往 合作夥伴中心硬體儀表板,並用你的帳號登入。
選擇 提交新硬體。
在 [ 套件和簽署屬性 ] 區段中,輸入驅動程式提交的產品名稱。 使用此名稱來搜尋並整理您的驅動程式提交。
備註
當您與另一家公司共用您的驅動程式時,會顯示此名稱。
將兩個測試簽署選項保持未核取(未選取)。
針對 要求的簽章 選項,選擇要包含在驅動程式套件中的簽章:
選取頁面底部的 [ 提交 ]。
簽署完成後,從硬體儀表板下載已簽署的驅動程式。
確認駕駛員是否已正確簽署
請依以下步驟確認您的駕駛人是否已正確簽署:
下載提交檔案之後,請擷取驅動程序檔案。
使用系統管理員許可權開啟命令提示字元視窗。
輸入以下指令以確認驅動程式是否如預期般簽署:
C:\Echo> SignTool verify Echo.Sys若要列出其他資訊,並讓 SignTool 驗證具有多個簽章的檔案中的所有簽章,請輸入下列命令:
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys要確認驅動程式的增強金鑰使用量(EKU),請完成以下步驟:
打開 Windows 檔案總管,找到那個二進位檔。 以滑鼠右鍵按一下檔案,然後選取 [屬性]。
在 數位簽章 標籤中,選擇簽名列表中列出的項目。
選取 [詳細數據],然後選取 [檢視憑證]。
在 [ 詳細數據] 索引標籤上,選取 [增強金鑰使用方式]。
驅動程式在重新簽署驅動程式時,會使用下列程式:
附加 Microsoft SHA-2 嵌入式簽章。
如果驅動程式二進位檔是由客戶使用自己的憑證所內嵌的,請覆寫簽章。
建立並簽署一個新的目錄檔案,並附帶 SHA-2 Microsoft 憑證。 目錄會取代客戶提供的任何現有目錄。
在 Windows 上測試你的驅動程式
安裝範例驅動並在 Windows 上測試:
使用系統管理員許可權開啟命令提示字元視窗。
移至驅動程式套件資料夾,然後輸入下列命令。
C:\Echo> devcon install echo.inf root\ECHO確認驅動程式安裝過程中沒有出現以下錯誤訊息:「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