SignTool.exe (署名ツール)

更新 : 2011 年 4 月

署名ツールはコマンド ライン ツールで、ファイルにデジタル署名を添付し、ファイルの署名を検証し、ファイルにタイム スタンプを付けます。

このツールは Visual Studio および Windows SDK と一緒に自動的にインストールされます。 このツールを実行するには、Visual Studio コマンド プロンプトまたは Windows SDK コマンド プロンプト (CMD シェル) を使用することをお勧めします。 これらのユーティリティを使用すると、インストール フォルダーに移動することなくツールを簡単に実行できます。 詳細については、「Visual Studio と Windows SDK のコマンド プロンプト」を参照してください。

  • コンピューターに Visual Studio がインストールされている場合は、タスク バーの [スタート] ボタンをクリックし、[すべてのプログラム]、[Visual Studio]、[Visual Studio Tools]、[Visual Studio Command Prompt] の順にクリックします。

    または

    コンピューターに Windows SDK がインストールされている場合は、タスク バーの [スタート] ボタンをクリックし、[すべてのプログラム]、Windows SDK のフォルダー、[Command Prompt] (または [CMD Shell]) の順にクリックします。

  • コマンド プロンプトに次のように入力します。

        signtool [command] [options] [file_name | ...]

パラメーター

引数

説明

command

4 つのコマンド (catdb、sign、Timestamp、または Verify) の 1 つで、ファイルで実行する操作を指定します。 各コマンドの詳細については、次の表を参照してください。

options

コマンドを変更するオプションです。 グローバル オプション /q および /v のほかに、各コマンドは固有のオプション セットをサポートします。

file_name

署名するファイルへのパスです。

次のコマンドは、署名ツールでサポートされています。 各コマンドは、それぞれのセクションに示す個別のオプション セットと共に使用されます。

コマンド

説明

catdb

カタログ ファイルをカタログ データベースに追加したり、カタログ データベースから削除したりします。 カタログ データベースは、カタログ ファイルの自動検索で使用され、GUID によって識別されます。 catdb コマンドでサポートされているオプションの一覧については、「catdb コマンド オプション」を参照してください。

sign

ファイルにデジタル署名します。 デジタル署名はファイルの改ざんを防止し、ユーザーが署名証明書に基づいて署名者を検証できるようにします。 sign コマンドでサポートされているオプションの一覧については、「sign コマンド オプション」を参照してください。

Timestamp

ファイルにタイム スタンプを付けます。 TimeStamp コマンドでサポートされているオプションの一覧については、「TimeStamp コマンド オプション」を参照してください。

Verify

ファイルのデジタル署名を検証します。そのために、署名証明書が信頼できる機関により発行されたかどうか、署名証明書が取り消されたかどうかを確認します。また、オプションで、署名証明書が特定のポリシーに対して有効になっているかどうかを確認します。 Verify コマンドでサポートされているオプションの一覧については、「Verify コマンド オプション」を参照してください。

次のオプションは、すべての署名ツール コマンドに適用されます。

Global オプション

説明

/q

成功した実行の出力および失敗した実行の最小出力はありません。

/v

成功した実行、失敗した実行、および警告メッセージの詳細出力。

catdb コマンド オプション

次の表に、catdb コマンドと共に使用できるオプションを示します。

Catdb オプション

説明

/d

既定のカタログ データベースを更新するように指定します。 /d と /g のいずれのオプションも使用しない場合、署名ツールはシステム コンポーネントおよびドライバー データベースを更新します。

/g GUID

グローバル一意識別子 GUID によって識別されるカタログ データベースを更新するように指定します。

/r

指定したカタログをカタログ データベースから削除します。 このオプションが指定されていない場合、署名ツールはカタログ データベースに指定されたカタログを追加します。

/u

追加されたカタログ ファイルに対して、一意な名前を自動的に生成するように指定します。 必要に応じて、既存のカタログ ファイルと名前が競合しないように、カタログ ファイルの名前が変更されます。 このオプションが指定されていない場合、署名ツールは追加されるカタログと同じ名前を持つ既存のカタログを上書きします。

sign コマンド オプション

次の表に、sign コマンドと共に使用できるオプションを示します。

Sign コマンド オプション

説明

/a

最適な署名証明書を自動的に選択します。 署名ツールは、指定されたすべての条件を満たす有効な証明書をすべて検出し、最も長い期間有効である証明書を選択します。 このオプションが指定されていない場合、署名ツールは有効な署名証明書を 1 つだけ検索することが前提とします。

/ac file

file から署名ブロックに証明書を追加します。

/c CertTemplateName

署名証明書に対して証明書テンプレート名 (Microsoft 拡張機能) を指定します。

/csp CSPName

秘密キー コンテナーを含む暗号化サービス プロバイダー (CSP: Cryptographic Service Provider) を指定します。

/d Desc

署名された内容の説明を指定します。

/du URL

署名された内容の詳細な説明に対する URL (Uniform Resource Locator) を指定します。

/f SignCertFile

ファイルの署名証明書を指定します。 ファイルが個人情報交換 (PFX: Personal Information Exchange) 形式でパスワードによって保護されている場合に、/p オプションを使用してパスワードを指定します。 ファイルに秘密キーが含まれていない場合、/csp および /k オプションを使用して、CSP と秘密キー コンテナー名を指定します。

/fd

ファイルの署名の作成に使用するファイル ダイジェスト アルゴリズムを指定します。 既定値は SHA1 です。

/i IssuerName

署名証明書の発行者の名前を指定します。 この値には、発行者名全体の部分文字列を指定できます。

/kc PrivKeyContainerName

秘密キー コンテナー名を指定します。

/n SubjectName

署名証明書の件名を指定します。 この値には、件名全体の部分文字列を指定できます。

/nph

サポートされている場合に、実行可能ファイルのページ ハッシュを抑制します。 既定値は、SIGNTOOL_PAGE_HASHES 環境変数と wintrust.dll のバージョンによって決定されます。

/p Password

PFX ファイルを開くときに使用するパスワードを指定します。 PFX ファイルを指定するには、/f オプションを使用します。

/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

署名証明書に必要な拡張キー使用法 (EKU: Enhanced Key Usage) を指定します。 使用法の値は、OID または文字列によって指定できます。 既定の使用法は "Code Signing" (1.3.6.1.5.5.7.3.3) です。

/uw

使用法 "Windows System Component Verification" (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 オプションを指定する必要があります。

Verify コマンド オプション

Verify オプション

説明

/a

ファイルの検証にすべてのメソッドを使用できることを指定します。 まず、カタログ データベースを検索して、カタログでファイルが署名されているかどうかを確認します。 任意のカタログでファイルが署名されていない場合、署名ツールはファイルの埋め込み署名の検証を試みます。 カタログで署名されているファイルまたは署名されていないファイルを検証するときには、このオプションをお勧めします。 これらのファイルの例には、Windows ファイルまたはドライバーが含まれます。

/ad

既定のカタログ データベースを使用してカタログを検索します。

/as

システム コンポーネント (ドライバー) のカタログ データベースを使用してカタログを検索します。

/ag CatDBGUID

CatDBGUID によって識別されるカタログ データベースのカタログを検索します。

/c CatFile

名前でカタログ ファイルを指定します。

/d

署名ツールで説明と説明の URL を出力するように指定します。

/kp

カーネル モード ドライバーの署名ポリシーを使用して検証を実行するように指定します。

/o Version

オペレーティング システムのバージョンでファイルを確認します。 Version の形式は PlatformID:VerMajor.VerMinor.BuildNumber です。

/pa

既定の Authenticode 検証ポリシーを使用するように指定します。 /pa オプションが指定されていない場合、署名ツールは Windows ドライバー検証ポリシーを使用します。 このオプションは、catdb オプションと一緒に使用することはできません。

/pg PolicyGUID

GUID により検証ポリシーを指定します。 PolicyGUID は検証ポリシーの ActionID に対応しています。 このオプションは、catdb オプションと一緒に使用することはできません。

/ph

署名ツールでページ ハッシュ値を出力および検証するように指定します。

/r RootSubjectName

署名証明書のチェーン先とするルート証明書の件名を指定します。 この値には、ルート証明書の件名全体の部分文字列を指定できます。

/tw

署名にタイム スタンプが付けられていない場合に、警告を生成することを指定します。

戻り値

署名ツールは、終了時に次のいずれかの終了コードを返します。

終了コード

説明

0

実行に成功しました。

1

実行に失敗しました。

2

実行は完了しましたが、警告があります。

カタログ ファイル MyCatalogFileName.cat をシステム コンポーネントおよびドライバー データベースに追加するコマンドを次に示します。 /v オプションは、必要に応じて一意の名前を生成し、MyCatalogFileName.cat という名前の既存のカタログ ファイルが置き換えられないようにします。

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 ストアにある件名が 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.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 のコマンド プロンプト

その他の技術情報

.NET Framework ツール

履歴の変更

日付

履歴

理由

2011 年 4 月

Visual Studio と Windows SDK のコマンド プロンプトの使用に関する情報を追加。

情報の拡充

2010 年 5 月

再構成: コマンドとオプションを更新。

カスタマー フィードバック