天天看點

數字簽名工具signtool簽名工具 SignTool.exe

簽名工具 SignTool.exe

.NET Framework 4.5 

簽名工具是一個指令行工具,用于對檔案進行數字簽名,驗證檔案和時間戳檔案中的簽名。

安裝 Visual Studio 和 Windows SDK 時會自動安裝此工具。要運作工具,我們建議您使用 Visual Studio 指令提示符或 Windows SDK 指令提示符(也稱 CMD Shell)。您可以使用這些實用程式輕松運作工具,而不需要導航到安裝檔案夾。有關更多資訊,請參見Visual Studio 和 Windows SDK 指令提示。

  • 如果您的計算機上已安裝了 Visual Studio:在工作列上依次單擊 Start、All Programs、Visual Studio、Visual Studio Tools、Visual Studio Command Prompt。

    - 或 -

    如果您的計算機上已安裝了 Windows SDK:在工作列上依次單擊 Start、All Programs、Windows SDK 檔案夾和Command Prompt(或CMD Shell)。

  • 在指令提示處,鍵入下列指令:
signtool [command] [options] [file_name | ...]
      

參數

參數 說明
command 指定要對檔案執行的操作的四個指令之一(catdb、sign、Timestamp 或Verify)。對每個指令的描述請參見下一個表。
options 用于修改指令的選項。 除了全局/q 和/v 選項之外,每個指令均支援一組唯一選項。
file_name 要進行簽名的檔案的路徑。

簽名工具支援下列指令。 每個指令使用不同的選項集,這些選項集被列在它們相應的節中。

Command 說明
catdb 在目錄資料庫中添加或移除目錄檔案。 目錄資料庫用于自動查找目錄檔案,并由 GUID 辨別。有關catdb 指令支援的選項的清單,請參見catdb 指令行選項。
sign 對檔案進行數字簽名。 數字簽名可以避免檔案被篡改,并且基于簽名證書使使用者能夠驗證簽名者。有關sign 指令支援的選項的清單,請參見簽名指令選項。
Timestamp 時間戳檔案。 有關TimeStamp 指令支援的選項的清單,請參見時間戳指令選項。
Verify 通過确定簽名證書是否由受信任的頒發機構、是否已撤消了簽名證書,以及簽名證書對于特定政策是否有效(此項可選)驗證檔案的數字簽名。有關Verify 指令支援的選項的清單,請參見驗證指令選項。

下列選項适用于所有簽名工具指令。

全局選項 說明
/q 執行成功時不生成輸出,執行失敗時生成最少的輸出。
/v 執行成功、執行失敗或産生警告消息時生成詳細輸出。

catdb 指令行選項

下表列出了可用于 catdb 指令的選項。

Catdb 選項 說明
/d 指定更新預設目錄資料庫。 如果/d和/g 選項都未使用,則簽名工具更新系統元件和驅動程式資料庫。
/gGUID 指定更新由全局唯一辨別符 (GUID) 辨別的目錄資料庫。
/r 從目錄資料庫中移除指定的目錄。 如果未指定該選項,“簽名工具”将向目錄資料庫添加指定的目錄。
/u 指定為添加的目錄檔案自動生成唯一的名稱。 如有必要,重命名目錄檔案,以避免與現有的目錄檔案發生沖突。如果未指定該選項,簽名工具将覆寫與所添加的目錄同名的任何現有目錄。

簽名指令選項

下表列出了可用于 sign 指令的選項。

簽名指令選項 說明
/a 自動選擇最佳的簽名證書。 簽名工具将查找滿足所有指定條件的所有有效的證書,并選擇有效時間最長的一個。如果未指定該選項,簽名工具僅查找一個有效的簽名證書。
/ac  檔案 将檔案中的其他證書添加到簽名塊。
/c CertTemplateName 指定用于對證書進行簽名的證書模闆名(一個 Microsoft 擴充)。
/csp CSPName 指定包含私鑰容器的加密服務提供程式 (CSP)。
/d Desc 指定已簽名内容的說明。
/du URL 為已簽名文檔的詳細說明指定統一資源定位器 (URL)。
/f SignCertFile 指定檔案中的簽名證書。 如果檔案是個人資訊交換 (PFX) 格式且受密碼保護,則使用/p 選項來指定密碼。如果檔案不包含私鑰,則使用/csp 和/k 選項指定 CSP 和私鑰容器名。
/fd 指定将用于建立檔案簽名的檔案摘要算法。 預設值為 SHA1。
/i IssuerName 指定簽名證書的頒發者的名稱。 該值可以是整個頒發者名稱的子字元串。
/kc PrivKeyContainerName 指定私鑰容器名。
/n SubjectName 指定簽名證書的主體的名稱。 該值可以是整個主體名稱的子字元串。
/nph 如果支援,為可執行檔案取消頁面的哈希。 預設值由 SIGNTOOL_PAGE_HASHES 環境變量和 wintrust.dll 版本決定。
/p Password(密碼) 指定打開 PFX 檔案時使用的密碼。 (使用/f 選項指定 PFX 檔案。)
/ph 如果支援,則生成執行檔案的頁面哈希。
/r 根主題名稱 指定簽名證書必須連結到的根證書的主體名稱。 該值可以是根證書的整個主題名稱的子字元串。
/s StoreName 指定要在搜尋證書時打開的存儲區。 如果未指定該選項,則打開My 存儲。
/sha1 Hash(哈希) 指定簽名證書的 SHA1 哈希。
/sm 指定使用一個計算機存儲區,而不是使用使用者存儲區。
/t URL 指定時間戳伺服器的 URL。 如果該選項(或/tr)不存在,将不會對簽名檔案執行時間戳操作。如果時間戳操作失敗,将生成一個警告。此選項不能與/tr 選項一起使用。
/td alg 與 /tr 選項一起使用,以請求 RFC 3161 時間戳伺服器使用的摘要算法。
/tr URL 指定 RFC 3161 時間戳伺服器的 URL。 如果該選項(或/t)不存在,将不會對簽名檔案執行時間戳操作。如果時間戳操作失敗,将生成一個警告。此選項不能與/t 選項一起使用。
/u Usage(用法) 指定簽名證書中必須存在的增強型密鑰用法 (EKU)。 可以通過 OID 或字元串指定該用法的值。預設用法為“代碼簽名”(1.3.6.1.5.5.7.3.3)。
/uw 指定“Windows 系統元件驗證”(1.3.6.1.4.1.311.10.3.6)的使用情況。

時間戳指令選項

下表列出了可用于 TimeStamp 指令的選項。

TimeStamp 選項 說明
/t URL 指定時間戳伺服器的 URL。 要執行時間戳操作的檔案必須在以前已經進行了簽名。需要/t 或/tr 選項。
/td alg 請求 RFC 3161 時間戳伺服器使用的摘要算法。 /td與/tr 選項一起使用。
/tr URL 指定 RFC 3161 時間戳伺服器的 URL。 要執行時間戳操作的檔案必須在以前已經進行了簽名。需要/tr 或/t 選項。

驗證指令選項

驗證選項 說明
/a 指定可以使用所有方法來驗證檔案。 首先,搜尋目錄資料庫以确定是否在目錄中對檔案進行了簽名。如果未在任何目錄中對檔案進行簽名,簽名工具将嘗試驗證檔案的嵌入簽名。驗證可以或不能在目錄中進行簽名的檔案時,建議使用該選項。這些檔案的示例包括 Windows 檔案或驅動程式。
/ad 使用預設的目錄資料庫查找目錄。
/as 使用系統元件(驅動程式)目錄資料庫查找目錄。
/ag CatDBGUID 在目錄資料庫中通過 CatDBGUID 辨別查找目錄。
/c CatFile 通過名稱指定目錄檔案。
/d 說明簽名工具應列印描述和描述的 URL。
/kp 指定應使用核心模式驅動程式簽名政策進行驗證。
/o Version(版本) 通過作業系統版本驗證檔案。 版本具有如下格式:PlatformID:VerMajor.VerMinor.BuildNumber
/pa 說明應使用預設認證碼驗證政策。 如果未指定/pa 選項,“簽名工具”将使用 “Windows 驅動程式驗證政策”。此選項不能與catdb 選項一起使用。
/pg PolicyGUID 通過 GUID 指定驗證政策。 PolicyGUID 對應于驗證政策的 ActionID。此選項不能與catdb 選項一起使用。
/ph 說明簽名工具應列印并驗證頁數哈希值。
/rRootSubjectName 指定簽名證書必須連結到的根證書的主體名稱。 該值可以是根證書的整個主題名稱的子字元串。
/tw 如果簽名沒有時間戳,則指定應該生成的一個警告。

傳回值

當其終止時,簽名工具傳回以下的退出代碼之一。

退出代碼 說明
執行成功。
1 執行失敗。
2 執行伴随着警告完成。

示例

以下指令将目錄檔案 MyCatalogFileName.cat 添加到系統元件和驅動程式資料庫中。如有防止替換現有的名稱為MyCatalogFileName.cat 的目錄檔案的必要,/v 選項會生成唯一的名稱。

signtool catdb /v /u MyCatalogFileName.cat
      

以下指令通過使用最佳證書對檔案進行自動簽名。

signtool sign /a MyFile.exe
      

以下指令使用存儲在密碼保護 PFX 檔案中的證書對檔案進行數字簽名。

signtool sign /f MyCert.pfx /p MyPassword MyFile.exe
      

以下指令對檔案進行數字簽名并加蓋時間戳。用于檔案簽名的證書存儲在 PFX 檔案中。

signtool sign /f MyCert.pfx /t http://timestamp.verisign.com/scripts/timstamp.dll MyFile.exe
      

以下指令通過使用位于 My 存儲區的證書對檔案進行簽名,其主題名稱為My Company Certificate。

signtool sign /n "My Company Certificate" MyFile.exe
      

以下指令對 ActiveX 控件進行簽名,并提供提示使用者安裝控制時由 Internet Explorer 顯示的資訊。

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html MyControl.exe
      

以下指令對以數字簽名過的檔案加蓋時間戳。

signtool timestamp /t http://timestamp.verisign.com/scripts/timstamp.dll MyFile.exe
      

以下指令驗證已經簽名的檔案。

signtool verify MyFile.exe
      

以下指令驗證可能已經在目錄中簽過名的系統檔案。

signtool verify /a SystemFile.dll
      

以下指令驗證在名為 MyCatalog.cat 目錄中已簽字的系統檔案。

signtool verify /c MyCatalog.cat SystemFile.dll
      

文章來自  http://msdn.microsoft.com/zh-cn/library/vstudio/8s9b9yaz.aspx

下一篇: C筆記

繼續閱讀