SignTool.exe (簽署工具)
更新:2011 年 4 月
簽署工具是一個命令列工具,能夠數位簽署檔案、驗證檔案中的簽章以及為檔案加上時間戳記。
這個工具會自動隨 Visual Studio 和 Windows SDK 一起安裝。 若要執行工具,建議您使用 Visual Studio 命令提示字元或 Windows SDK 命令提示字元。 這些公司可讓您輕鬆地執行工具,而不需瀏覽至安裝資料夾。 如需詳細資訊,請參閱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 |
要簽署之檔案的路徑。 |
簽署工具支援下列命令。 每個指令搭配一組獨特的選項使用,這些選項列於個別區段中。
命令 |
描述 |
---|---|
catdb |
在目錄資料庫中加入或移除目錄檔。 目錄資料庫可以用來自動查閱目錄檔,並且是由 GUID 所識別。 如需 catdb 命令所支援之選項的清單,請參閱 catdb 命令選項。 |
sign |
數位簽署檔案。 數位簽章可以防止檔案遭到篡改,而且可讓使用者根據簽署憑證確認簽署人。 如需 sign 命令所支援之選項的清單,請參閱 Sign 命令選項。 |
Timestamp |
為檔案加上時間戳記。 如需 TimeStamp 命令所支援之選項的清單,請參閱 TimeStamp 命令選項。 |
Verify |
藉由判斷簽署憑證是否由受信任的授權單位所發佈、簽署憑證是否已撤銷,以及簽署憑證是否為特定原則的有效憑證,來驗證檔案的數位簽章。 如需 Verify 命令所支援之選項的清單,請參閱 驗證命令選項。 |
下列選項適用於所有簽署工具命令。
Global 選項 |
描述 |
---|---|
/q |
執行成功時沒有任何輸出,執行失敗時產生最少輸出。 |
/v |
執行成功或失敗時所產生的輸出以及警告訊息,都顯示詳細資料。 |
catdb 命令選項
下表列出可以搭配 catdb 命令使用的選項。
Catdb 選項 |
描述 |
---|---|
/d |
指示預設目錄資料庫已經更新。 如果 /d 和 /g 選項都不使用,簽署工具就會更新系統元件和驅動程式資料庫。 |
/g GUID |
指示由全域唯一識別項 GUID 所識別的目錄資料庫已經更新。 |
/r |
從目錄資料庫移除指定的目錄。 如果沒有指定這個選項,簽署工具就會在目錄資料庫中加入指定的目錄。 |
/u |
指定已為加入的目錄檔自動產生唯一的名稱。 必要時,目錄檔會重新命名,以避免與現有的目錄檔發生名稱衝突。 如果沒有指定這個選項,簽署工具會覆寫具有與所要加入之目錄相同名稱的所有現有目錄。 |
Sign 命令選項
下表列出可以搭配 sign 命令使用的選項。
Sign 命令選項 |
描述 |
---|---|
/a |
自動選取最佳的簽署憑證。 簽署工具會找到滿足所有指定條件的所有有效憑證,並且選取有效時間最長的一個。 如果沒有這個選項,簽署工具只需要找出一個有效的簽署憑證。 |
/ac file |
從 file 新增其他憑證至簽章區塊。 |
/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 和私密金鑰容器的名稱。 |
/fd |
指定要用於建立檔案簽章的檔案摘要演算法。 預設值為 SHA1。 |
/i IssuerName |
指定簽署憑證的簽發者名稱。 這個值可以是完整簽發者名稱的子字串。 |
/kc PrivKeyContainerName |
指定私密金鑰容器名稱。 |
/n SubjectName |
指定簽署憑證的主體名稱。 這個值可以是完整主體名稱的子字串。 |
/nph |
如果支援,則隱藏可執行檔的頁面雜湊。 預設取決於 SIGNTOOL_PAGE_HASHES 環境變數和 wintrust.dll 版本。 |
/p Password |
指定用來開啟 PFX 檔案的密碼。 (使用/f選項指定 PFX 檔。) |
/ph |
如果支援,則產生可執行檔的頁面雜湊。 |
/r RootSubjectName |
指定簽署憑證必須鏈結之根憑證的主體名稱。 這個值可以是完整根憑證主體名稱的子字串。 |
/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 |
指定在簽署憑證時必須存在的增強金鑰使用方法 (Enhanced Key Usage,EKU)。 使用方法的值可以利用 OID 或字串指定。 預設的使用方法為 "Code Signing" (1.3.6.1.5.5.7.3.3)。 |
/uw |
指定 "Windows 系統元件驗證" (1.3.6.1.4.1.311.10.3.6) 的使用方式。 |
TimeStamp 命令選項
下表列出可以搭配 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 |
根據作業系統版本驗證檔案。 Version 具有下列格式:PlatformID:VerMajor.VerMinor.BuildNumber |
/pa |
指定使用預設 Authentication 驗證原則。 如果未指定 /pa 選項,簽署工具便會使用「Windows 驅動程式驗證原則」(Windows Driver Verification Policy)。 這個選項無法與 catdb 選項搭配使用。 |
/pg PolicyGUID |
依 GUID 指定驗證原則。 PolicyGUID 會對應至驗證原則的 ActionID。 這個選項無法與 catdb 選項搭配使用。 |
/ph |
指定簽署工具應列印及驗證頁面雜湊值。 |
/r RootSubjectName |
指定簽署憑證必須鏈結之根憑證的主體名稱。 這個值可以是完整根憑證主體名稱的子字串。 |
/tw |
指定如果簽章未加上時間戳記,則應產生警告。 |
傳回值
簽署工具終止時會傳回下列其中一個結束代碼。
結束代碼 |
描述 |
---|---|
0 |
執行成功。 |
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.verisgn/com/scripts.timstamp.dll MyFile.exe
下列命令會使用位於主旨名稱為 My Company Certificate 之 My 存放區中的憑證來簽署檔案。
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.verisgn/com/scripts.timstamp.dll MyFile.exe
下列命令會確認檔案是否已簽署。
signtool verify MyFile.exe
下列命令會驗證可能已在目錄中簽署的系統檔。
signtool verify /a SystemFile.dll
下列命令會驗證已在名為 MyCatalog.cat 之目錄中簽署的系統檔。
signtool verify /c MyCatalog.cat SystemFile.dll
請參閱
參考
Visual Studio 和 Windows SDK 命令提示字元
其他資源
變更記錄
日期 |
記錄 |
原因 |
---|---|---|
2011 年 4 月 |
加入使用 Visual Studio 和 Windows SDK 命令提示字元的相關資訊。 |
資訊加強。 |
2010 年 5 月 |
重組;更新指令和選項。 |
客戶回函。 |