SignTool

SignTool (Signtool.exe) は、ファイルのデジタル署名、ファイル内の署名の検証、ファイルへのタイムスタンプの付与などを行うコマンド ライン CryptoAPI ツールです。


    SignTool [Operation] [Options] [FileName ...]

操作、オプション、引数の例

操作

catdb

カタログ データベースを更新するように SignTool を構成します。SignTool は、データベースにカタログ ファイルを追加するか、またはデータベースからカタログを削除します。既定では、catdb コマンドは FileName 引数で名前が指定されたファイルを、システム コンポーネント (ドライバー) データベースに追加します。

  カタログ データベースは、カタログ ファイルの自動検索に使われます。

sign

FileName 引数で名前が指定されたファイルにデジタル署名を行うように SignTool を構成します。

timestamp

FileName 引数で名前が指定されたファイルにタイムスタンプを付けるように SignTool を構成します。

verify

FileName 引数で名前が指定されたファイルのデジタル署名を検証するように SignTool を構成します。

Catdb 操作のオプション

/d

カタログ データベースを更新するように SignTool を構成します。/d オプションも /g オプションも指定しないと、SignTool はシステム コンポーネントとドライバー データベースを更新します。

/g Guid

GUID 引数で指定されたカタログ データベースを更新するように SignTool を構成します。

/r

FileName 引数で名前が指定された各カタログ ファイルをカタログ データベースから削除するように SignTool を構成します。このオプションを指定しないと、SignTool は指定されたカタログ ファイルをカタログ データベースに追加します。

/u

カタログ データベース内に既にあるカタログ ファイルとの競合を避ける処置として必要に応じてカタログ ファイルに一意の名前を生成するように SignTool を構成します。このオプションを指定しないと、SignTool は追加されるカタログと同じ名前を持つ、既にあるカタログを上書きします。

Sign 操作のオプション

/a

最適な署名証明書を自動的に選ぶように SignTool を構成します。このオプションが存在しないと、SignTool は署名証明書が 1 つだけ検出されると想定します。

/ac CrossCertFileName

CertificateName という名前のソフトウェア発行元証明書 (SPC) と共に使われて証明書ストア StoreName にインストールされるクロス証明書ファイルの名前を指定します。このオプションは、署名証明書が SPC の場合にのみ使うようにしてください。

/c CertTemplateName

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

/csp CSPName

秘密キー コンテナーが含まれる暗号化サービス プロバイダー (CSP) を指定します。

/d Desc

署名されたコンテンツの説明を指定します。

/du URL

署名されたコンテンツの詳細説明の URL を指定します。

/f SignCertFile

ファイル内の署名証明書を指定します。サポートされるのは Personal Information Exchange (PFX) ファイル形式だけです。Pvk2Pfx ツールを使って、SPC ファイルと PVK ファイルを PFX 形式に変換できます。

ファイルがパスワードで保護された PFX 形式の場合は、/p オプションを使ってそのパスワードを指定します。ファイルに秘密キーが含まれない場合は、/csp オプションを使って CSP を指定し、/k オプションを使って秘密キー コンテナー名を指定します。

/fd

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

/i IssuerName

署名証明書の発行者の名前を指定します。この値は、発行者名の一部でもかまいません。

/j DLL

署名の属性を提供する DLL の名前を指定します。

/jp ParameterName

/j コマンドで指定する DLL に渡すパラメーターを指定します。

/kc PrivKeyContainerName

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

/n SubjectName

署名証明書のサブジェクトの名前を指定します。この値は、サブジェクト名の一部でもかまいません。

/nph

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

/p Password

PFX ファイルを開く時に使うパスワードを指定します。PFX ファイルは /f オプションを使って指定できます。

/p7 Path

指定された各コンテンツ ファイルについて、PKCS (Public Key Cryptography Standard) #7 ファイルを生成するように指定します。PKCS #7 ファイルには、path\filename.p7 という名前が付きます。

/p7ce Value

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

/p7co OID

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

/ph

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

/r RootSubjectName

署名証明書のチェーン先とするルート証明書のサブジェクト名を指定します。この値は、ルート証明書のサブジェクト名の一部でもかまいません。

/s StoreName

ファイルの署名に使うために証明書を検索するときに開く証明書ストアの名前を指定します。このオプションを指定しないと、My 証明書ストアが開かれます。

/sha1 Hash

署名証明書の SHA1 ハッシュを指定します。

/sm

ユーザー証明書ストアではなくコンピューター証明書ストアを使うように SignTool を構成します。

/t URL

タイムスタンプ サーバーの URL を指定します。このオプションを指定しないと、署名されたファイルにタイムスタンプが付きません。署名者のキーが侵害された場合には、ファイルの署名に使われたキーを無効にするために必要な情報がタイムスタンプによって提供されます。このため、カタログ ファイルまたはドライバー ファイルにはタイムスタンプを付ける必要があります。

/td alg

RFC 3161 タイム スタンプ サーバーによって使われているダイジェスト アルゴリズムを要求します。/tr オプションと組み合わせて使います。

/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) の使用法を指定します。

Timestamp 操作のオプション

/p7

PKCS #7 ファイルにタイム スタンプを設定します。

/t URL

タイムスタンプ サーバーの URL を指定します。タイムスタンプを付けるファイルはあらかじめ署名されている必要があります。

/td alg

RFC 3161 タイム スタンプ サーバーが使うダイジェスト アルゴリズムを要求します。/td/tr オプションと組み合わせて使います。

/tp index

署名の index 位置にタイム スタンプを設定します。

/tr alg

RFC 3161 タイム スタンプ サーバーが使うダイジェスト アルゴリズムを要求します。/td/tr オプションと組み合わせて使います。

Verify 操作のオプション

/a

あらゆる方法でファイルを検証できるということを指定します。まず、カタログ データベースが検索され、ファイルがカタログ内で署名されているかどうかが確認されます。どのカタログでもファイルが署名されていない場合、SignTool はそのファイルの埋め込み署名の検証を試みます。このオプションは、カタログ内で署名されているかどうかわからないファイルを検証する場合に使うことをお勧めします。

/ad

ファイルが署名されたカタログを見つけるために既定のカタログ データベースだけを検索することを指定します。

/all

複数の署名を含むファイルのすべての署名を検証します。

/as

ファイルが署名されたカタログを見つけるためにシステム コンポーネント (ドライバー) カタログ データベースだけを検索することを指定します。

/ag CatDBGUID

ファイルが署名されたカタログを見つけるために CatDBGUID 引数で指定されたカタログ データベースだけを検索することを指定します。

/c CatalogFileName

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

/d

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

/ds index

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

/hash {SHA1|SHA256}

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

/kp

FileName 引数で指定する各ファイルのデジタル署名が Windows Vista 以降の Windows バージョンのカーネル モードのコード署名ポリシーPnP デバイス インストールの署名の要件に準拠しているかどうかを検証するように SignTool を構成します。このオプションを指定しないと、SignTool は署名が PnP デバイス インストールの署名の要件に準拠しているかどうかだけを検証します。

/ms

複数の検証セマンティクスを使います。Windows 8 以降ではこれが、WinVerifyTrust function 関数呼び出しの既定の動作になります。

/o Version

オペレーティング システム バージョンに従ってファイルを検証します。Version 引数の書式は PlatformID:VerMajor.VerMinor.BuildNumber です。

/o オプションを使うことをお勧めします。/o を指定しないと、SignTool から予期しない結果が返される場合があります。たとえば、/o オプションを指定しなかった場合、以前のオペレーティング システムではシステム カタログが正しく検証できるにもかかわらず、新しいオペレーティング システムでは正しく検証できないことがあります。

/p7

PKCS #7 ファイルを検証します。既にあるポリシーは、PKCS #7 検証に使われません。署名証明書の署名がチェックされ、チェーンが構築されます。

/pa

FileName 引数で指定する各ファイルのデジタル署名が PnP デバイス インストールの署名の要件に準拠しているかどうかを検証するように SignTool を構成します。

  このオプションを catdb のオプションと組み合わせて使うことはできません。

/pg PolicyGUID

検証ポリシーを GUID で指定します。PolicyGUID は、検証ポリシーの ActionID に対応します。

  このオプションを catdb のオプションと組み合わせて使うことはできません。

/ph

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

/r RootSubjectName

署名証明書のチェーン先とするルート証明書のサブジェクト名を指定します。この値は、ルート証明書のサブジェクト名の一部でもかまいません。

/tw

署名にタイムスタンプが付いていない場合に警告を表示するように指定します。

全般オプション

/q

正常に実行された場合は何も表示されず、実行が失敗した場合は最小限のメッセージが表示されるように、SignTool を構成します。

/v

詳しい操作メッセージと警告メッセージが表示されるように SignTool を構成します。

/?

コマンド ウィンドウにヘルプ情報が表示されるように SignTool を構成します。

FileName ...

1 つ以上のファイル名のリストを指定します。コマンドに応じて、SignTool は指定されたファイルの署名、ファイルへのタイムスタンプの付与、またはファイルの検証を行います。catdb コマンドを実行した場合、SignTool は指定されたファイルをカタログ データベースに追加するか、またはカタログ データベースから削除します。

sign コマンド、timestamp コマンド、verify コマンドの場合、ファイルはドライバー パッケージのカタログ ファイルでも、ドライバー ファイルでもかまいません。

catdb コマンドの場合、ファイルはドライバー パッケージのカタログ ファイルである必要があります。

コメント

SignTool は多数のオプションをサポートしています。このトピックでは、ドライバー パッケージまたはドライバー ファイルの署名または検証に使うことができるオプションだけを説明しています。

すべての SignTool パラメーターの一覧については、Microsoft の SignTool に関する Web サイトをご覧ください。

ファイルの署名について詳しくは、Microsoft の暗号化ツールに関する Web サイトをご覧ください。

32 ビット バージョンの SignTool ツールは、WDK の bin\i386 フォルダーにあります。64 ビット バージョンの CertMgr ツールは、WDK の bin\amd64 フォルダーと bin\ia64 フォルダーにあります。

署名の例

次の例は、ソフトウェア発行元証明書 (SPC) と対応するクロス証明書を使ってドライバー パッケージのカタログ ファイルに署名する方法を示しています。この例は、Windows Vista 以降の 64 ビット バージョンの Windows (これらの Windows ではカーネル モードのコード署名ポリシーが適用される) を対象にしたドライバー パッケージの署名に有効です。この例では、ドライバー パッケージのカタログ ファイル AbcCatFileName.cat に署名しています。この例では、カタログ ファイルに署名するために、クロス証明書 AbcCrossCertificate と AbcSPCCertificate 証明書を使っています。AbcSPCCertificate 証明書は、AbcCertificateStore 証明書ストアに置かれています。

この他、カタログ ファイルに署名するために、公開されているタイムスタンプ サーバーも使っています。タイムスタンプ サーバーは、VeriSign 社によって提供されています (URL は http://timestamp.verisign.com/scripts/timstamp.dll)。


SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.verisign.com/scripts/timstamp.dll AbcCatFileName.cat

次の例は、SPC とクロス証明書を使ってドライバー ファイルに署名を埋め込む方法を示しています。パラメーターはすべて、署名対象のファイルがカタログ ファイル AbcCatFileName.cat ではなく AbcDriverFile.sys である点を除き、カタログ ファイルに署名する例と同じです。


SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.verisign.com/scripts/timstamp.dll AbcDriverFile.sys

次の例は、商業的リリース証明書または商業的テスト証明書を使ってドライバー パッケージのカタログ ファイルに署名する方法を示しています。この例は、Windows Vista 以降の 32 ビット バージョンの Windows (これらの Windows ではカーネル モードのコード署名ポリシーが適用されない) を対象にしたドライバー パッケージの署名に有効です。この例では、ドライバー パッケージのカタログ ファイル CatalogFileName.cat に署名しています。この例では、TestCertificateStore 証明書ストアに置かれている AbcTestCertificate テスト証明書を使ってカタログ ファイルに署名しています。

この他、カタログ ファイルに署名するために、公開されているタイムスタンプ サーバーも使っています。タイムスタンプ サーバーは、VeriSign 社によって提供されています (URL は http://timestamp.verisign.com/scripts/timstamp.dll)。


SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.verisign.com/scripts/timstamp.dll CatalogFileName.cat

検証の例

次の例は、ドライバー パッケージのカタログ ファイルの署名がカーネル モードのコード署名ポリシーと PnP デバイス インストールの署名の要件に準拠していることを検証する方法を示しています。この例では、カタログ ファイル AbcCatalogFile.cat の署名を検証しています。


SignTool verify /kp CatalogFileName.cat

次の例は、ドライバー パッケージのカタログ ファイルに挙げられたファイルの署名がカーネル モードのコード署名ポリシーと PnP デバイス インストールの署名の要件に準拠していることを検証する方法を示しています。この例では、ファイル AbcDriverPackage.inf の署名を検証しています。カタログ ファイル CatalogFileName.cat 内に拇印エントリがある必要があります。


SignTool verify /kp /c CatalogFileName.cat AbcDriverPackage.inf

次の例は、埋め込まれた署名が Windows Vista 以降の Windows バージョンにおけるカーネル モードのコード署名ポリシーに準拠していることを検証する方法を示しています。この例では、ドライバー ファイル AbcDriverFile.sys に埋め込まれた署名を検証しています。


SignTool verify /kp AbcDriverFile.sys

次の例は、ドライバー パッケージのカタログ ファイルの署名が PnP デバイス インストールの署名の要件に準拠していることを検証する方法を示しています。この例では、カタログ ファイル CatalogFileName.cat の署名を検証しています。


SignTool verify /pa CatalogFileName.cat

カタログ ファイルをシステム コンポーネント (ドライバー) データベースに追加する例

次の例は、SignTool を使ってカタログ ファイル CatalogFileName.cat をシステム コンポーネント (ドライバー) データベースに追加する方法を示しています。/v オプションは、SignTool が詳細モードで動作するように構成します。/u オプションは、CatalogFileName.cat と同じ名前を持つ既に存在するカタログ ファイルを置き換えないように、必要に応じて SignTool が追加されるカタログ ファイルに対して一意の名前を生成するように構成します。


SignTool catdb /v /u CatalogFileName.cat

 

 

表示:
© 2014 Microsoft