認證簽署 Windows 驅動程式

本文說明如何使用證明簽署來簽署驅動程式。

備註

針對零售族群的認證驅動程式不會在 Windows Update 上發布。 當您測試使用 CoDevTest 登錄金鑰/Surface SSRK選項的情境時,仍持續支援認證簽署驅動程式。

先決條件

建立 CAB 檔案

以下步驟透過使用 Echo 驅動程式範例來說明,如何提交 CAB 檔案。

典型的 CAB 檔案提交必須包含下列元件:

  • 驅動程式本身(例如, Echo.sys)。

  • 控制面板使用的驅動程式 INF(.inf)檔案,以促進簽署過程。

  • 用於偵錯資訊的符號檔,例如 Echo.pdb.pdb 檔案是Microsoft自動化當機分析工具所必需的。

  • 目錄(.cat)檔案是必須的,僅用於公司驗證。 Microsoft 會重新產生目錄檔案並替換先前提交的目錄檔案。

備註

CAB 檔案中的每個驅動程式資料夾都必須支援同一組架構。 例如,它們必須支援 x86、x64,或者必須全部支援 x86 和 x64。

當您參考驅動程式位置 (\server\share) 時,請勿使用 UNC 檔案共享路徑。 您必須使用映射的磁碟機代號,CAB 才能有效。

若要建立 CAB 檔案,請遵循下列步驟:

  1. 將待簽署的二進位檔案彙整在單一目錄中。 此範例會使用 C:\Echo 資料夾。

  2. 使用系統管理員許可權開啟命令提示字元視窗。

  3. 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).
    
  4. 準備一個 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
    
  5. 輸入下列命令以建立 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
    
  6. 在子目錄中找出 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 提交檔案:

  1. 前往 合作夥伴中心硬體儀表板,並用你的帳號登入。

  2. 選擇 提交新硬體

    硬體提交清單的螢幕快照。

  3. 在 [ 套件和簽署屬性 ] 區段中,輸入驅動程式提交的產品名稱。 使用此名稱來搜尋並整理您的驅動程式提交。

    備註

    當您與另一家公司共用您的驅動程式時,會顯示此名稱。

  4. 將兩個測試簽署選項保持未核取(未選取)。

  5. 針對 要求的簽章 選項,選擇要包含在驅動程式套件中的簽章:

    截圖顯示提交 Echo 驅動程式以供簽名的選項。

  6. 選取頁面底部的 [ 提交 ]。

  7. 簽署完成後,從硬體儀表板下載已簽署的驅動程式。

確認駕駛員是否已正確簽署

請依以下步驟確認您的駕駛人是否已正確簽署:

  1. 下載提交檔案之後,請擷取驅動程序檔案。

  2. 使用系統管理員許可權開啟命令提示字元視窗。

  3. 輸入以下指令以確認驅動程式是否如預期般簽署:

    C:\Echo> SignTool verify Echo.Sys
    
  4. 若要列出其他資訊,並讓 SignTool 驗證具有多個簽章的檔案中的所有簽章,請輸入下列命令:

     C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
    
  5. 要確認驅動程式的增強金鑰使用量(EKU),請完成以下步驟:

    1. 打開 Windows 檔案總管,找到那個二進位檔。 以滑鼠右鍵按一下檔案,然後選取 [屬性]。

    2. 數位簽章 標籤中,選擇簽名列表中列出的項目。

    3. 選取 [詳細數據],然後選取 [檢視憑證]。

    4. 在 [ 詳細數據] 索引標籤上,選取 [增強金鑰使用方式]。

驅動程式在重新簽署驅動程式時,會使用下列程式:

  1. 附加 Microsoft SHA-2 嵌入式簽章。

  2. 如果驅動程式二進位檔是由客戶使用自己的憑證所內嵌的,請覆寫簽章。

  3. 建立並簽署一個新的目錄檔案,並附帶 SHA-2 Microsoft 憑證。 目錄會取代客戶提供的任何現有目錄。

在 Windows 上測試你的驅動程式

安裝範例驅動並在 Windows 上測試:

  1. 使用系統管理員許可權開啟命令提示字元視窗。

  2. 移至驅動程式套件資料夾,然後輸入下列命令。

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. 確認驅動程式安裝過程中沒有出現以下錯誤訊息:「Windows 無法驗證此驅動軟體的發行者。」

使用多個驅動建立提交項目

請遵循下列步驟同時提交多個驅動程式:

  1. 為每個驅動程式建立一個子目錄。

    示範驅動程式簽署目錄結構的示意圖。

  2. 準備參考子目錄的 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