共用方式為


證明簽署 Windows 驅動程式

本文說明如何使用證明簽署來簽署驅動程式。 如需證明簽署的詳細資訊和需求,請參閱 Windows 10 證明簽署的驅動程式

這很重要

自 2023 年 3 月 1 日起,經簽署的證明針對零售客戶的驅動程式不再在 Windows Update 上發布。 在使用 CoDevTest Registry Key / Surface SSRK 選項進行測試場景時,支援持續提供對證明簽署驅動程式的支持。

先決條件

建立 CAB 檔案

下列程式會使用 Echo 驅動程式範例 建立 CAB 檔案提交,以說明步驟。

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

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

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

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

  • 目錄 .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 檔案

下一個程式步驟是使用您的 EV 憑證簽署 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 程式代碼簽署程式的安全性。

在合作夥伴中心提交 EV 簽署的 Cab 檔案

簽署 CAB 檔案之後,您就可以在合作夥伴中心提交檔案:

  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 SHA2 內嵌簽章。

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

  3. 使用 SHA2 Microsoft 憑證建立並簽署新的目錄檔案。 目錄會取代客戶提供的任何現有目錄。

在 Windows 上測試驅動程式

安裝範例驅動程式並在 Windows 上進行測試:

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

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

    C:\Echo> devcon install echo.inf root\ECHO
    
  3. 確認驅動程式安裝程式不會顯示下列錯誤訊息:

    Windows 無法驗證此驅動程式軟體的發行者 message._

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

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

  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