2022年6月中旬に古いクライアント環境でもタイムスタンプ署名の検証をできるように、タイムスタンプ署名に新しいクロスルート証明書「DigiCert Trusted Root G4」を追加しました。
タイムスタンプ署名へのクロスルート証明書の導入は、古い環境のルートストアに既に普及しているルート証明書にチェーンするために実施されました。
この変更の一部として、新しいクロスルート証明書にはタイムスタンプ(1.3.6.1.5.5.7.3.8)のEKU属性のみが含まれていますが、同一クロスルート証明書は証明チェーンの一部としても使用されていたため、
Windows環境ではEKUが制限されているため、コード署名の証明書チェーンを検証できなくなる事象が発生しています。
レガシー環境でデジタル署名を検証すると次のようなエラーが発生します。
"証明書は要求された使用法では無効です"
※こちの事象は2022年8月15日に解消しております。詳しくは【解消いたしました】タイムスタンプ付コードサイニング証明書の署名検証エラーについてをご参照ください。
一次的な回避策として、デジサートは署名用の特別なクロスルート証明書を用意しました。
このクロスルート証明書にはWindows環境で署名検証ができるよう適切なEKU コード署名(1.3.6.1.5.5.7.3.3)が含まれています。
クロスルート証明書の種別 | 詳細 | 説明 |
コード署名用クロスルート | シリアル番号: 0fd1bbca796bd7f8dd4c82e10a9a9631 有効期間開始日: 有効期間終了日: |
|
タイムスタンプ署名の クロスルート |
シリアル番号: 01240afb1e380b8a16f14b719df4d3c0 有効期間開始日: 有効期間終了日: |
このクロスルート証明書「DigiCert Trusted Root G4」はルート証明書「“DigiCert Assured ID Root CA」によりクロス署名されており、 EKUにはタイムスタンプ署名のみが含まれています |
このコード署名用クロスルート証明書を署名時に含めることでこの問題を回避することができます。
例:Signtoolを使用して署名をする場合は、signingコマンドで/acパラメーターを渡します。
signtool sign /ac DigiCert-G4-to-HAEVRCA-CodeSigningCrossCert.crt /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a <ファイル名>
例:Signtoolで署名ファイルを確認する
signtool verify /pa <署名済ファイル名>
参考リンク:
Authenticode Signature Verification fails with new Timestamping cross-root(※本ページの原文)