簽名工具是一個命令行工具,用於用證書對文件進行數字簽名,驗證文件和時間戳文件中的簽名。
用法:signtool [command] [options] [file_name | ...]
| command |
指定要對文件執行的操作的四個命令之一(catdb、sign、Timestamp 或 Verify)。 |
| options |
用於修改命令的選項。除了全局 /q 和 /v 選項之外,每個命令均支持一組唯一選項。 /q 執行成功時不生成輸出,執行失敗時生成最少的輸出。 /v 執行成功、執行失敗或產生警告消息時生成詳細輸出。 |
| file_name |
要進行簽名的文件的路徑。 |
1. 四個命令
| catdb |
在目錄數據庫中添加或移除目錄文件。目錄數據庫用於自動查找目錄文件,並由 GUID 標識。 |
| sign |
對文件進行數字簽名。數字簽名可以避免文件被篡改,並且基於簽名證書使用戶能夠驗證簽名者。 |
| Timestamp |
時間戳文件。 |
| Verify |
通過確定簽名證書是否由受信任的頒發機構、是否已撤消了簽名證書,以及簽名證書對於特定策略是否有效驗證文件的數字簽名。 |
2. catdb 命令選項
| /d |
指定更新默認目錄數據庫。如果 /d和 /g 選項都未使用,則簽名工具更新系統組件和驅動程序數據庫。 |
| /gGUID |
指定更新由全局唯一標識符 (GUID) 標識的目錄數據庫。 |
| /r |
從目錄數據庫中移除指定的目錄。如果未指定該選項,“簽名工具”將向目錄數據庫添加指定的目錄。 |
| /u |
指定為添加的目錄文件自動生成唯一的名稱。如有必要,重命名目錄文件,以避免與現有的目錄文件發生沖突。如果未指定該選項,簽名工具將覆蓋與所添加的目錄同名的任何現有目錄。 |
3. 簽名命令選項(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)的使用情況。 |
4. 時間戳命令選項(TimeStamp)
| /t URL |
指定時間戳服務器的 URL。要執行時間戳操作的文件必須在以前已經進行了簽名。需要 /t 或 /tr 選項。 |
| /td alg |
請求 RFC 3161 時間戳服務器使用的摘要算法。/td 與 /tr 選項一起使用。 |
| /tr URL |
指定 RFC 3161 時間戳服務器的 URL。要執行時間戳操作的文件必須在以前已經進行了簽名。需要 /tr 或 /t 選項。 |
5. 驗證命令選項(Verify)
| /a |
指定可以使用所有方法來驗證文件。首先,搜索目錄數據庫以確定是否在目錄中對文件進行了簽名。如果未在任何目錄中對文件進行簽名,簽名工具將嘗試驗證文件的嵌入簽名。驗證可以或不能在目錄中進行簽名的文件時,建議使用該選項。這些文件的示例包括 Windows 文件或驅動程序。 |
| /ad |
使用默認的目錄數據庫查找目錄。 |
| /as |
使用系統組件(驅動程序)目錄數據庫查找目錄。 |
| /agCatDBGUID |
在目錄數據庫中通過 CatDBGUID 標識查找目錄。 |
| /cCatFile |
通過名稱指定目錄文件。 |
| /d |
說明簽名工具應打印描述和描述的 URL。 |
| /kp |
指定應使用內核模式驅動程序簽名策略進行驗證。 |
| /oVersion(版本) |
通過操作系統版本驗證文件。版本具有如下格式:PlatformID:VerMajor.VerMinor.BuildNumber |
| /pa |
說明應使用默認認證碼驗證策略。如果未指定 /pa 選項,“簽名工具”將使用“Windows 驅動程序驗證策略”。此選項不能與 catdb 選項一起使用。 |
| /pgPolicyGUID |
通過 GUID 指定驗證策略。PolicyGUID 對應於驗證策略的 ActionID。此選項不能與 catdb 選項一起使用。 |
| /ph |
說明簽名工具應打印並驗證頁數哈希值。 |
| /rRootSubjectName |
指定簽名證書必須鏈接到的根證書的主體名稱。該值可以是根證書的整個主題名稱的子字符串。 |
| /tw |
如果簽名沒有時間戳,則指定應該生成的一個警告。 |
6. 返回值
當其終止時,簽名工具返回以下的退出代碼之一。
0 執行成功。
1 執行失敗。
2 執行伴隨着警告完成。
相關鏈接:
參考資料:
