簽署適用於公開版本的驅動程式
將驅動程式套件發行至公用之前,建議您提交套件以進行認證。 如需詳細資訊,請參閱 Windows 硬體認證 和 [硬體儀錶板服務](.。/dashboard/index.md。 若要提交驅動程式套件以進行認證,您必須使用您從 VeriSign 等受信任證書頒發機構單位取得的憑證簽署套件。 如需詳細資訊,請參閱 取得 VeriSign 憑證。 您也需要由Microsoft提供的跨憑證。
假設您已從 Verisign 取得一對檔案:私鑰檔案 (PVK) 和軟體發佈憑證 (SPC)。 此外,假設您有Microsoft Visual Studio解決方案,其中包含名為 MyDriver 的驅動程序專案,以及名為 MyDriver 套件的驅動程式套件專案。 若要簽署驅動程式套件,請遵循下列步驟。
使用 Pvk2Pfx 工具來建立個人資訊交換 (PFX) 憑證。 Pvk2Pfx 工具會採用 PVK 和 SPC 檔案作為輸入,並建立單一 PFX 檔案。 在此練習中,假設您的 PFX 檔案名為 MyCert.pfx。
注意 建立 PFX 檔案之後,您可以將它重複使用給其他驅動程式專案,在其他驅動程式開發計算機上。
若要判斷您需要的跨憑證,請參閱 核心模式程式代碼簽署的跨憑證。 確認所需的跨憑證位於 $(BASEDIR)\CrossCertificates 中,其中 $(BASEDIR) 是 Windows 套件的基底目錄(例如 c:\Program Files (x86)\Windows Kits\8.0\CrossCertificates)。 如果不存在必要的跨憑證,請從 Microsoft 下載跨憑證,並將其複製到 $(BASEDIR)\CrossCertificates。
在 Visual Studio 中,開啟包含 MyDriver 和 MyDriver 套件專案的方案。 如果 方案總管 視窗尚未開啟,請從 [檢視] 功能表選擇 [方案總管]。 在 [方案總管] 視窗中,選取並按住 [或以滑鼠右鍵按兩下] 封裝專案 MyDriver 套件,然後選擇 [屬性]。
在封裝的屬性頁中,流覽至 [ 組態屬性 > 驅動程序簽署 > 一般]。 在 [ 簽署模式 ] 下拉式清單中,選取 [ 生產簽署]。 針對 生產憑證,請執行下列其中一項作業:
輸入簽署憑證的路徑(例如 c:\Certs\MyCert.pfx)。
選擇 [ 從檔案選取],然後流覽至您的簽署憑證。
選擇 [ 從存放區 選取],然後選擇您先前匯入證書存儲的憑證。
注意 若要將憑證匯入存放區,請選取並按住憑證檔案(或以滑鼠右鍵按兩下)憑證檔案 (PFX 檔案),然後選擇 [ 安裝 PFX]。 遵循憑證匯入精靈中的指示。
注意 如果您決定稍後使用不同的憑證,請確定新的憑證會匯入證書存儲。 如果您選擇 [ 從檔案 選取] 並流覽至新的憑證,新的憑證會自動匯入證書存儲。 不過,如果您手動輸入新憑證的路徑,則不會自動匯入證書存儲。 在此情況下,您必須選取並保存新的憑證檔案(或以滑鼠右鍵按兩下),然後選擇 [ 安裝 PFX]。
在 [ 驅動程序簽署 > 一般 ] 屬性頁面上,針對 TimeStampServer,選取下拉式清單中的其中一個時間戳伺服器。
注意 使用下拉式清單中的其中一個時間戳伺服器,需要您在建置驅動程式套件時聯機到因特網。 如果您在建置驅動程式套件時需要與因特網中斷連線,請清除 [TimeStampServer ] 字段。
在封裝的屬性頁中,流覽至 [ 組態屬性 > Inf2Cat > 一般]。 在 [ 執行 Inf2Cat ] 下拉式清單中,選取 [ 是]。
關閉封裝的屬性頁。
選取並按住 (或以滑鼠右鍵按下) 驅動程序專案 MyDriver,然後選擇 [屬性]
在驅動程式的屬性頁面中,流覽至 [ 設定屬性 > 驅動程序簽署 > 一般]。 將 TimeStampServer 設定為您在驅動程式套件屬性中使用的相同值。 將 [簽署模式] 設定為 [生產簽署],並將 [生產憑證] 設定為您在驅動程式套件屬性中使用的相同值。
當您準備好建置驅動程式套件時,請按 F5。 Visual Studio 會自動簽署您的套件和驅動程式檔案。 如果您已設定部署,Visual Studio 也會將已簽署的驅動程式套件部署到測試計算機。 如需詳細資訊,請參閱布建計算機以進行驅動程式部署和測試(WDK 8.1)。
檢視驅動程式套件檔案
建置解決方案之後,請在 檔案總管 流覽至包含驅動程式套件的資料夾。 封裝中的其中一個檔案是目錄檔案。 目錄檔案包含封裝的數字簽名。 如需檢視已簽署套件中檔案的範例,請參閱 根據範本撰寫 KMDF 驅動程式。
取得 WHQL 發行簽章
當您的驅動程式套件通過認證測試時,Windows 硬體質量實驗室 (WHQL) 即可簽署認證測試。 如果您的驅動程式套件是由 WHQL 簽署,它可以透過 Windows Update 程式或其他Microsoft支援的散發機制散發。
若要在 Windows 10、8.1、8 和 7 上安裝,您的驅動程式套件可以具有單一 SHA1 簽章。
從 Windows 10 開始,您也必須提交任何新的 Windows 10 核心模式驅動程式,以在 Windows 硬體開發人員中心儀錶板入口網站上進行數位簽名。 核心和使用者模式驅動程式提交都必須具有有效的 延伸驗證 (“EV”) 程式代碼簽署憑證。
** 附注 ** SHA1 取代不適用於驅動程式。
與簽署個別驅動程式檔案相比,簽署套件
驅動程式套件包含數個檔案。 驅動程式套件通常會有一或多個驅動程式檔案、信息檔(INF 檔案),以及目錄檔案。 目錄檔案包含封裝中其他檔案的相關信息。 當您簽署類別目錄檔案時,目錄檔案中的簽章會做為整個驅動程式套件的簽章。 換句話說,簽署目錄檔案與簽署驅動程式套件相同。
在大部分情況下,簽署驅動程式套件就已足夠,而且不需要簽署個別驅動程式檔案。 不過,有時候您需要同時簽署套件和個別驅動程式檔案。 例如,開機啟動驅動程式檔案必須個別簽署。 簽署個別驅動程式檔案稱為 在驅動程式檔案中內嵌簽章。
假設您有 Visual Studio 方案,其中包含名為 MyDriver 的驅動程式專案,以及名為 MyDriver 套件的驅動程式套件專案。 Visual Studio 提供兩組屬性頁:一組適用於 My Driver,另一組適用於 My Driver Package。 若要簽署驅動程式套件,請設定 My Driver Package 的驅動程式簽署 屬性。 若要在個別驅動程式檔案中內嵌簽章,請設定 My Driver 的驅動程式簽署 屬性。
當您設定生產簽署的驅動程式套件屬性時,請記得據以調整個別驅動程式檔案的簽署屬性。 關閉個別驅動程式檔案的簽署,或將個別驅動程式檔案設定為使用您為封裝指定的相同憑證。
注意 若要查看憑證的哈希(也稱為指紋),請開啟 [命令提示字元] 視窗,並流覽至包含憑證的目錄。 輸入 certutil -dump CertName.pfx 命令,其中 CertName.pfx 是您憑證的名稱。