簽署工具 (signtool.exe)
簽署工具是一個命令列工具,能夠數位簽署檔案、驗證檔案中的簽章或為檔案加上時間戳記。
注意事項 |
---|
在 Microsoft Windows NT、Windows Me、Windows 98 或 Windows 95 上不支援簽署工具。 |
signtool [command] [options] [file_name | ...]
參數
引數 | 說明 |
---|---|
command |
其中一個命令旗標,用來指定要對檔案執行的作業 |
options |
其中一個選項旗標,用來修改命令旗標 |
file_name |
要簽署之檔案的路徑 |
簽署工具支援下列命令。
命令 | 說明 |
---|---|
catdb |
在目錄資料庫中加入或移除目錄檔 |
sign |
數位簽署檔案 |
signwizard |
啟動簽署精靈,只能指定單一檔案做為檔名命令列引數 |
timestamp |
為檔案加上時間戳記 |
verify |
驗證檔案的數位簽章 |
下列選項適用於 catdb** 命令。
Catdb 選項 | 說明 |
---|---|
/d |
指示預設目錄資料庫已經更新。如果未使用 /d 或 /g 選項,簽署工具便會更新系統元件和驅動程式資料庫。 |
/g GUID |
指示由全域唯一識別項 (GUID) 所識別的目錄資料庫已經更新。 |
/r |
從目錄資料庫移除指定的目錄。如果未指定此選項,簽署工具將會在目錄資料庫中加入指定的目錄。 |
/u |
指定已為加入的目錄檔自動產生唯一的名稱。必要時,目錄檔會重新命名,以避免與現有的目錄檔發生名稱衝突。如果未指定此選項,簽署工具將會覆寫具有與所要加入之目錄相同名稱的所有現有目錄。 |
注意事項 |
---|
目錄資料庫可以用來自動查閱目錄檔。 |
下列選項適用於 sign 命令。
Sign 選項 | 說明 |
---|---|
/a |
自動選取最佳的簽署憑證。如果沒有這個選項,簽署工具只需要找出一個有效的簽署憑證。 |
/c CertTemplateName |
指定適用於簽署憑證的「憑證範本名稱」(Certificate Template Name),這是一個 Microsoft 擴充功能。 |
/csp CSPName |
指定包含私密金鑰容器的 Cryptographic Service Provider (CSP)。 |
/d Desc |
指定簽署內容的描述。 |
/du URL |
指定用於簽署內容之擴充描述的 Uniform Resource Locator (URL)。 |
/f SignCertFile |
指定檔案中的簽署憑證。如果檔案為「個人資訊交換」(PFX) 格式並且利用密碼加以保護,請使用 /p 選項指定密碼。如果檔案沒有包含私密金鑰,請使用 /csp 和 /k 選項,個別指定 CSP 和私密金鑰容器名稱。 |
/i IssuerName |
指定簽署憑證的發行者名稱。這個值可以是完整發行者名稱的子字串。 |
/k PrivKeyContainerName |
指定私密金鑰容器名稱。 |
/n SubjectName |
指定簽署憑證的主體名稱。這個值可以是完整主體名稱的子字串。 |
/p Password |
指定用來開啟 PFX 檔案的密碼。PFX 檔案可以使用 /f 選項指定。 |
/r RootSubjectName |
指定簽署憑證必須鏈結之根憑證的主體名稱。這個值可以是完整根憑證主體名稱的子字串。 |
/s StoreName |
指定搜尋憑證時要開啟的存放區。如果未指定此選項,則會開啟「個人」存放區。 |
/sha1 Hash |
指定簽署憑證的 SHA1 雜湊。 |
/sm |
指定使用電腦存放區,而非使用者存放區。 |
/t URL |
指定時間戳記伺服器的 URL。如果沒有這個選項,簽署的檔案就不會加上時間戳記。如果加上時間戳記失敗,便會產生警告。 |
/u Usage |
指定必須出現在簽署憑證內的 Enhanced Key Usage (EKU)。使用方法的值可以利用 OID 或字串指定。預設的使用方法為 "Code Signing" (1.3.6.1.5.5.7.3.3)。 |
下列選項適用於 ** timestamp 命令。
Timestamp 選項 | 說明 |
---|---|
/t URL |
必要項。指定時間戳記伺服器的 URL。要加上時間戳記的檔案必須先經過簽署。 |
下列選項適用於 verify 命令。
Sign 選項 | 說明 |
---|---|
/a |
指定所有方法都可以用來驗證檔案。首先會搜尋目錄資料庫,判斷檔案是否已在目錄中簽署。如果檔案未在任何目錄中簽署,簽署工具便會嘗試驗證檔案的內嵌簽署。驗證不一定已在目錄中簽署的檔案時,建議您採用這個選項。不一定已簽署之檔案的範例包括了 Windows 檔案或驅動程式。 |
/ad |
使用預設目錄資料庫尋找目錄。 |
/as |
使用系統元件 (驅動程式) 目錄資料庫尋找目錄。 |
/ag CatDBGUID |
在由 GUID 所識別的目錄資料庫中尋找目錄。 |
/c CatFile |
依名稱指定目錄檔。 |
/o Version |
根據作業系統版本驗證檔案。版本參數的格式為:PlatformID:VerMajor.VerMinor.BuildNumber |
/pa |
指定使用「預設驗證的驗證原則」(Default Authentication Verification Policy)。如果未指定 /pa 選項,簽署工具便會使用「Windows 驅動程式驗證原則」(Windows Driver Verification Policy)。這個選項不能與 catdb 選項一起使用。 |
/pg PolicyGUID |
依 GUID 指定驗證原則。GUID 會對應到驗證原則的 ActionID。這個選項不能與 catdb 選項一起使用。 |
/r RootSubjectName |
指定簽署憑證必須鏈結之根憑證的主體名稱。這個值可以是完整根憑證主體名稱的子字串。 |
/tw |
指定如果簽章未加上時間戳記,便產生警告。 |
下列選項適用於所有簽署工具命令。
Global 選項 | 說明 |
---|---|
/q |
執行成功時沒有任何輸出,執行失敗時產生最少輸出。 |
/v |
執行成功或失敗時所產生的輸出以及警告訊息,都顯示詳細資料。 |
備註
本機電腦上必須安裝 CAPICOM 2.0 可轉散發套件,才能執行簽署工具。CAPICOM 2.0 可轉散發套件可以從 https://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm 取得。
簽署工具的 verify 命令會判斷簽署憑證是否由受信任的授權單位所發佈、簽署憑證是否已撤銷,以及簽署憑證是否為特定原則的有效憑證。
執行成功時,簽署工具會傳回結束代碼 (Exit Code) 0、執行失敗時傳回 1,執行完成但出現警告訊息則會傳回 2。
範例
下列命令示範如何使用最佳憑證自動簽署檔案。
signtool sign /a MyFile.exe