SignTool の既知の問題とトラブルシューティング

SignTool の使用時に発生する最も一般的なエラーは内部エラーで、代表的なエラーは次の通りです。

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B) 

0x80080206 (APPX_E_CORRUPT_CONTENT) など、エラー コードが 0x8008 で始まる場合、署名対象のパッケージは無効です。 このようなエラーが発生した場合は、パッケージをビルドし直し、SignTool をもう一度実行してください。

SignTool には、証明書のエラーとフィルタリングを表示できるデバッグ オプションがあります。 デバッグ機能を使用するには、/debug オプションを sign の直後に指定し、その後ろに完全な SignTool コマンドを指定します。

SignTool sign /debug [options]

さらに一般的なエラーとしては、0x8007000B があります。 この種類のエラーについては、イベント ログで詳細を確認してください。

イベント ログで詳細を参照するには、次の手順を実行します。

  • Eventvwr.msc を実行します。
  • イベント ログを開きます。[イベント ビューアー (ローカル)]、[アプリケーションとサービス ログ]、[Microsoft]、[Windows]、[AppxPackagingOM]、[Microsoft-Windows-AppxPackaging/稼働中] の順に展開します。
  • 最新のエラー イベントを検索します。

内部エラーの 0x8007000B は、通常、次のいずれかの値に対応しています。

イベント ID イベント文字列の例 提案される解決策
150 エラー 0x8007000B: アプリ マニフェストの発行元の名前 (CN=Contoso) は、署名証明書のサブジェクト名 (CN=Contoso, C=US) と同じにする必要があります。 アプリ マニフェストの発行元の名前は、署名のサブジェクト名と完全に一致する必要があります。
151 エラー 0x8007000B: 指定されている署名ハッシュ方式 (SHA512) は、アプリ バンドルのブロック マップで使用されているハッシュ方式 (SHA256) と同じにする必要があります。 /fd パラメーターに指定されている hashAlgorithm が、正しくありません。 (アプリ パッケージの作成に使用した) アプリ パッケージのブロック マップと一致する hashAlgorithm を使用して SignTool を再実行してください。
152 エラー 0x8007000B: アプリ パッケージの内容は、そのブロック マップに対して検証する必要があります。 アプリ パッケージは破損しています。再ビルドして、新しいブロック マップを生成する必要があります。 アプリ パッケージの作成の詳細については、「MakeAppx.exe ツールを使ったアプリ パッケージの作成」を参照してください。

もう 1 つの一般的なエラー 0x80080057。 次の問題が発生する場合は、次のコマンドで SignTool ツールを使用してポータブル実行可能ファイル (PE) ファイルに署名Windows。

  • 4 ギガバイト (GB) 以上の PE ファイルの署名に失敗しました。 署名しようとするときに、"無効なパラメーター (0x80080057)" というエラー メッセージが表示されます。

  • 4 GB を超えるファイルの場合、SignTool がファイルに正常に署名した場合でも、生成されたハッシュが正確でない可能性があります。

    注意

    これは、.cat ファイルに特に当てはっています。

この問題は、PE ファイル (.exe、.sysなど) で発生します。 この問題は、イメージ サイズを指定する PE ヘッダーの ULONG 変数が発生します。 (Vista 以前のバージョンなど、ダウンレベルのオペレーティング システムの場合、イメージのサイズは 2 GB です)。これは、1996 以降の設計上の制限です。 この値の上限は、PE ファイルの場合は 4 GB です (例: .exe、.sys。 通常、.cat ファイルは署名可能ですが、生成される内部ハッシュが正確ではない可能性があります。

この問題を回避するには、署名しようとする PE ファイルが 4 GB 未満である必要があります。 下位互換性のリスクのため、バックポートも永続的な修正も現在可能ではありません。 ただし、この問題は調査中です。

注意

この問題は SignTool に固有の問題ではありません。 PE ヘッダーの設計は、使用されているツールに関係なく、Windows 7 Windows 以降のバージョンでは 4 GB に制限されます。

よく寄せられる質問 (FAQ)

Q1: デジタル署名 (およびタイム スタンプ カウンター署名) の現在の公式ファイル サイズ制限はWindows。

A1: .exe や .sysなどの PE ファイルの場合、署名の最大ファイル サイズは 4 GB です。

Q2:大きなファイルに署名するWindows最も多くのWindows Server 2016など、特定のバージョンのファイルがありますか?

A2: いいえ。この問題は、すべてのバージョンの問題に影響Windows。

Q3: Signtool の 64 ビット バージョンでは、32 ビット バージョンよりもこの機能のサポートが向上していますか?

A: いいえ。SignTool の 64 ビット バージョンでは、32 ビット バージョンと同じ値が使用されます。 そのため、問題は 64 ビットのままです。

Q4: 32 ビット バージョンの Windows を使用しているお客様は、64 ビット バージョンの SignTool を使用して署名されたファイルを使用しようとして問題が発生する可能性がありますか?

A:いいえ。 ただし、どのバージョンの SignTool が使用されている場合でも、制限は残ります。

Q5: 別の署名ツールまたはメソッドを完全に使用する必要がありますか?

A: 現在、デジタル署名の代替方法はありません。