證明簽署 Windows 10+ 驅動程式

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

重要

自 2023 年 3 月 1 日起,已簽署以零售對象為目標的證明驅動程式不再發布在 Windows Update 上。 選取 CoDevTest 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 檔案:

  1. 收集要登入單一目錄的二進位檔。 在這裡範例中,我們將使用 C:\\Echo

  2. 以 管理員 istrator 開啟命令提示字元視窗。

  3. 輸入 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).
    
  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 檔案

  1. 使用 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 檔案

  1. 移至 合作夥伴中心硬體儀錶板 ,並使用您的認證登入。

  2. 選取 [ 提交新硬體]。

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

  3. 在 [ 套件和簽署屬性 ] 區段中,輸入驅動程式提交的產品名稱。 此名稱可用來搜尋及組織驅動程式提交。

    注意

    如果您與另一家公司共用您的驅動程序,他們會看到此名稱。

  4. 讓這兩個測試簽署選項保持未核取狀態。

  5. 針對 [要求籤章],選取您要包含在驅動程式套件中的簽章。

    顯示提交響應驅動程式以進行簽署之選項的螢幕快照。

  6. 向下移至頁面,然後選取 [ 提交]。

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

驗證驅動程式是否已正確簽署

完成下列步驟,以確保驅動程式已正確簽署。

  1. 下載提交檔案之後,請解壓縮驅動程序檔案。

  2. 以 管理員 istrator 開啟命令提示字元視窗。

  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. 在 [ 詳細數據] 索引標籤上,選取 [增強金鑰使用方式]。

當儀錶板辭職驅動程式時,會使用下列程式。

  • 附加 Microsoft SHA2 內嵌簽章。
  • 如果驅動程式二進位檔由客戶使用自己的憑證進行內嵌簽署,將不會覆寫這些簽章。
  • 使用 SHA2 Microsoft 憑證建立並簽署新的目錄檔案。 此目錄會取代客戶提供的任何現有目錄。

在 Windows 10 上測試驅動程式

使用下列指示來安裝範例驅動程式。

  1. 以 管理員 istrator 開啟命令提示字元視窗。 移至驅動程式套件資料夾,然後輸入下列命令。

    C:\Echo> devcon install echo.inf root\ECHO
    
  2. 確認驅動程式安裝程式不會顯示「Windows 無法驗證此驅動程式軟體的發行者」。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