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/Operational] の順に展開します。
- 最新のエラー イベントを見つける
内部エラー 0x8007000Bは、通常、次のいずれかの値に対応します。
イベント ID | イベント文字列の例 | 提案される解決策 |
---|---|---|
150 | エラー 0x8007000B: アプリ マニフェストの発行元名 (CN=Contoso) は、署名証明書のサブジェクト名 (CN=Contoso、C=US) と一致する必要があります。 | アプリ マニフェストの発行元名は、署名のサブジェクト名と正確に一致する必要があります。 |
151 | エラー 0x8007000B: 指定された署名ハッシュ メソッド (SHA512) は、アプリ パッケージ ブロック マップ (SHA256) で使用されるハッシュ メソッドと一致する必要があります。 | /fd パラメーターで指定された hashAlgorithm が正しくありません。 アプリ パッケージ ブロック マップ (アプリ パッケージの作成に使用) に一致する hashAlgorithm を使用して SignTool を再実行する |
152 | エラー 0x8007000B: アプリ パッケージの内容は、そのブロック マップに対して検証する必要があります。 | アプリ パッケージが破損しているため、新しいブロック マップを生成するには再構築する必要があります。 アプリ パッケージの作成の詳細については、「MakeAppx.exe ツールを使用してアプリ パッケージを作成する」を参照してください 。 |
もう 1 つの一般的なエラーは、0x80080057 です。 Windows で SignTool ツールを使用して、移植可能な実行可能 (PE) ファイルに署名しようとすると、次の問題が発生する場合があります。
4 ギガバイト (GB) 以上の PE ファイルに署名できませんでした。 署名しようとすると、"無効なパラメーター (0x80080057)" というエラーメッセージが表示されます。
4 GB を超えるファイルの場合、SignTool がファイルに正常に署名したとしても、生成されるハッシュが正確でない場合があります。
Note
これは、特に .cat ファイルの場合に当てはまります。
この問題は、.exe、.sys などの PE ファイルで発生します。 この問題は、イメージのサイズを指定する PE ヘッダーの ULONG 変数が原因で発生します (イメージ サイズは、Vista 以前のバージョンなどの下位レベルのオペレーティング システムでは 2 GB です)。これは 1996 年以降の設計上の制限事項です。 この値の上限は、.exe や .sys など、PE ファイルでは 4 GB です。 通常、.cat ファイルは署名されていますが、生成される内部ハッシュが正確でない場合があります。
この問題を回避するには、署名しようとしているすべての PE ファイルが 4 GB 未満であることを確認します。 旧バージョンとの互換性の問題のため、バックポートも永続的な修正もできません。 ただし、この問題は調査中です。
Note
この問題は、SignTool に固有のものではありません。 PE ヘッダーの設計は、使用されているツールに関係なく、Windows 7 以降の Windows のバージョンでは 4 GB に制限されています。
よく寄せられる質問 (FAQ)
Q1: Windows でのデジタル署名 (およびタイムスタンプ副署名) の現在の正式なファイル サイズの上限は何ですか。
A1: .exe や .sys などの PE ファイルの場合、署名の最大ファイルサイズは 4 GB です。
Q2: 大きなファイルに署名するための最大の機能を備えているような Windows の特定のバージョン (Windows Server 2016 など) はありますか。
A2: いいえ。この問題は、Windows のすべてのバージョンに影響します。
Q3:64 ビット版の Signtool では、32ビット版よりもこの機能のサポートが強化されていますか。
A3: いいえ。64 ビット版の SignTool では、32 ビット版と同じ値が使用されます。 そのため、この問題は 64 ビット版でも未解決です。
Q4: 64 ビット版の SignTool を使用して署名されたファイルを 32ビット版の Windows で使用していると、問題が発生する可能性がありますか。
A: いいえ。 ただし、使用されている SignTool のバージョンに関係なく、制限は残ります。
Q5: 異なる署名ツールまたはメソッドをすべて使用する必要がありますか。
A: 現在、デジタル署名に代わる方法はありません。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示