SignTool

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

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

操作、オプション、および引数の部分的なリスト

操作

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

Note

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

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

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

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

Catdb 操作オプション

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

/g Guid
GUID 引数によって識別されるカタログ データベースを更新するように SignTool を構成します。

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

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

署名操作のオプション

/a 最適な署名証明書を自動的に選択するように SignTool を構成します。 このオプションが指定されていない場合、SignTool は有効な署名証明書を 1 つのみ検索することが前提とします。

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

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

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

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

/du URL
署名されたコンテンツの拡張説明の URL を指定します。

/f SignCertFile
ファイルの署名証明書を指定します。 サポートされているのは、個人情報交換 (PFX) ファイル形式のみです。 Pvk2Pfx ツールを使用して、SPC ファイルと PVK ファイルを PFX 形式に変換できます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/s StoreName
ファイルの署名に使用する証明書を検索するときに開く証明書ストアの名前を指定します。 このオプションが指定されていない場合、マイ証明書ストアが開きます。

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

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

/t URL
タイムスタンプ・サーバーへの URL を指定します。 このオプションを指定しない場合、署名されたファイルにはタイムスタンプが付けられません。 署名者のキーが侵害された場合、タイムスタンプはファイルの署名に使用されたキーを取り消すために必要な情報を提供するため、カタログ ファイルまたはドライバー ファイルにタイムスタンプを付ける必要があります。

/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 システム コンポーネントの検証」(1.3.6.1.4.1.311.10.3.6) を指定します。

タイムスタンプ操作のオプション

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

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

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

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

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

操作オプションの確認

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

/ad
既定のカタログ データベースのみが、ファイルがサインインしたカタログを検索することを指定します。

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

/as
ファイルが署名されたカタログについて、システム コンポーネント (ドライバー) カタログ データベースのみを検索するように指定します。

/ag CatDBGUID
CatDBGUID 引数を使用して識別されたカタログ データベースのみが、ファイルがサインインしたカタログを検索することを指定します。

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

/d Sign Toolで説明と説明の URL を出力するように指定します。

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

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

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

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

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

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

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

/pa
FileName 引数で指定された各ファイルのデジタル署名が PnP デバイスのインストール署名要件に準拠していることを確認するように SignTool を構成します。

Note

このオプションは、catdb オプションと一緒に使用することはできません。

/pg PolicyGUID
GUID により検証ポリシーを指定します。 PolicyGUID は検証ポリシーの ActionID に対応しています。

Note

このオプションは、catdb オプションと一緒に使用することはできません。

/ph Sign Tool がページのハッシュ値を印刷して検証することを指定します。

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

/tw
署名がタイムスタンプされていない場合に警告が発生するように指定します。

全般オプション

/q
正常に実行された場合に出力を表示せず、失敗した実行の最小出力を表示するように SignTool を構成します。

/v
操作と警告メッセージの詳細バージョンを表示するように SignTool を構成します。

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

ファイル名
1 つ以上のファイル名のリストを指定します。 コマンドに応じて、SignTool は指定されたファイルに署名、タイムスタンプ、または検証を行います。 catdb コマンドを使用すると、SignTool によってカタログ データベースに指定されたファイルが追加または削除されます。

署名タイムスタンプ検証コマンドの場合、ファイルはドライバー パッケージまたはドライバー ファイルのカタログ ファイルにすることができます。

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

解説

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

SignTool パラメーターの完全な一覧については、Microsoft SignTool Web サイトをご参照ください。

ファイルの署名の詳細については、Microsoft Cryptography Tools Web サイトをご参照ください。

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

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

また、この例では、公開されているタイムスタンプ サーバーを使用してカタログ ファイルに署名します。 タイムスタンプ サーバーは DigiCert によって提供され、URL は http://timestamp.digicert.com です 詳細については、RFC3161準拠しているタイム スタンプ機関 (TSA) サーバーを参照してください

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcCatFileName.cat

SPC とクロス証明書を使用してドライバー ファイルに署名を埋め込む方法の例を次に示します。 署名されるファイルがカタログ ファイル AbcCatFileName.cat の代わりに AbcDriverFile.sys であることを除けば、すべてのパラメーターはカタログ ファイルに署名する例と同じです。

SignTool sign /ac AbcCrossCertificate.cer /s AbcCertificateStore /n AbcSPCCertificate /t http://timestamp.digicert.com AbcDriverFile.sys

商用リリース証明書または商用テスト証明書を使用してドライバー パッケージのカタログ ファイルに署名する方法の例を次に示します。 この例は、カーネル モード コード署名ポリシーを強制しない Windows Vista 以降の 32 ビット バージョンのドライバー パッケージに署名する場合に有効です。 この例では、ドライバー パッケージのカタログ ファイルに CatalogFileName.cat 署名します。 この例では、TestCertificateStore 証明書ストアにある AbcTestCertificate テスト証明書を使用して、カタログ ファイルに署名します。

また、この例では、公開されているタイムスタンプ サーバーを使用してカタログ ファイルに署名します。 タイムスタンプ サーバーは DigiCert によって提供され、URL は http://timestamp.digicert.com です

SignTool sign /s TestCertificateStore /n AbcTestCertificate /t http://timestamp.digicert.com 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