この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

SignTool.exe (署名ツール)

 

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

このツールは、Visual Studio と共に自動的にインストールされます。  このツールを実行するには、開発者コマンド プロンプト (または、Windows 7 の Visual Studio コマンド プロンプト) を使用します。  詳しくは、「Visual Studio 用開発者コマンド プロンプト」をご覧ください。  

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


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

引数

説明

Command

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

options

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

file_name

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

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

Command

説明

catdb

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

sign

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

Timestamp

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

Verify

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

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

Global オプション

説明

/q

コマンドが正常に実行した場合には何も出力されず、コマンドが失敗した場合には最小限の出力が表示されます。

/v

コマンドが正常に実行したか、失敗したかにかかわらず、詳細出力と警告メッセージが表示されます。

/debug

デバッグ情報を表示します。

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

Catdb オプション

説明

/d

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

/g GUID

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

/r

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

/u

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

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

Sign コマンド オプション

説明

/a

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

/ac  file

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

/as

この署名を追加します。  プライマリ署名が存在しない場合、この署名がプライマリ署名になります。  

/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 のバージョンによって決定されます。  PE ファイル以外では、このオプションは無視されます。  

/p  Password

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

/p7 Path

指定する各コンテンツ ファイルについて公開キー暗号化規格 (PKCS) #7 ファイルを作成することを指定します。  PKCS #7 ファイルの名前は path\filename.p7 です。  

/p7ce Value

署名された PKCS#7 コンテンツのオプションを指定します。  署名されたコンテンツを PKCS #7 ファイルに埋め込む場合は Value を "Embedded" に設定し、デタッチされた PKCS #7 ファイルの署名されたデータ部分を作成する場合には "DetachedSignedData" に設定します。   /p7ce オプションを使用しない場合は、既定で署名されたコンテンツが埋め込まれます。  

/p7co <OID>

署名された PKCS#7 コンテンツを識別するオブジェクト識別子 (OID) を指定します。

/ph

サポートされている場合に、実行可能ファイルのページ ハッシュを生成します。

/r  RootSubjectName

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

/s  StoreName

証明書を検索するときに開くストアを指定します。  このオプションが指定されていない場合、My ストアが開きます。  

/sha1  Hash

署名証明書の SHA1 ハッシュを指定します。  以降のスイッチによって指定された条件を複数の証明書が満たす場合、一般的に 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) を指定します。

使用例については、「SignTool を使用してファイルに署名する」をご覧ください。

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

TimeStamp オプション

説明

/p7

PKCS #7 ファイルにタイム スタンプを付けます。

/t  URL

タイム スタンプ サーバーの URL を指定します。  タイム スタンプを付けるファイルは、事前に署名されている必要があります。   /t オプションまたは /tr オプションを指定する必要があります。  

/td  alg

RFC 3161 タイム スタンプ サーバーで使用されるダイジェスト アルゴリズムを要求します。   /td は、/tr オプションと共に使用します。  

/tp index

index で署名にタイム スタンプを付けます。

/tr  URL

RFC 3161 タイム スタンプ サーバーの URL を指定します。  タイム スタンプを付けるファイルは、事前に署名されている必要があります。   /tr オプションまたは /t オプションを指定する必要があります。  

使用例については、「以前に署名したファイルにタイムスタンプを追加する」をご覧ください。

Verify オプション

説明

/a

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

/ad

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

/ag CatDBGUID

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

/all

複数の署名を含むファイル内のすべての署名を確認します。

/as

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

/c CatFile

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

/d

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

/ds Index

指定した位置の署名を検証します。

/hash (SHA1 | SHA256)

カタログ内のファイルを検索する場合に使用するオプションのハッシュ アルゴリズムを指定します。

/kp

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

/ms

複数の検証セマンティクスを使用します。  これは、Windows 8 以上での WinVerifyTrust 呼び出しの既定の動作です。  

/o Version

オペレーティング システムのバージョンでファイルを確認します。   Version の形式は、PlatformID:VerMajor.VerMinor.BuildNumber です。   PlatformID は、PlatformID 列挙メンバーの基になる値を表します。  

System_CAPS_important重要

/o スイッチを使用することをお勧めします。   /o を指定しない場合、SignTool.exe から予期しない結果が返されることがあります。  たとえば、/o スイッチを含めない場合、古いオペレーティング システム上で正しく検証されるシステム カタログが新しいオペレーティング システムで正しく検証されないことがあります。  

/p7

PKCS #7 ファイルを確認します。  PKCS #7 検証で既存のポリシーは使用されません。  署名がチェックされ、署名証明書のチェーンがビルドされます。  

/pa

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

/pg PolicyGUID

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

/ph

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

/r RootSubjectName

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

/tw

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

使用例については、「SignTool を使用してファイルの署名を検証する」をご覧ください。

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

終了コード

説明

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.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
表示: