vb.Net で記述され、.Net Framework 2.0 用の Windows 実行可能ファイルにコンパイルされたこの実行可能ファイルがあります。ソフトウェアのホワイトリストを使用して Windows クライアントで不明なソフトウェアを防止しているため、この実行可能ファイルは厳密な名前が付けられ、Visual Studio 2008 Professionalワークフローを使用して署名されています。
<SignFile
CertificateThumbprint="1f 6c ... 33 b2"
SigningTarget="$(TargetPath)"
TimestampUrl="http://timestamp.verisign.com/scripts/timstamp.dll"
ContinueOnError="false"
/>
このために、企業ルート CA、各企業ブランチの中間 CA、およびこれらのそれぞれの下に発行 CA を実行します。「私の」Issuing CA は、数か月前に有効期限が切れた Codesigning Certificate を提供してくれました。
ワークフローでTrusted Timestamp (Authenticode)を使用したため、ファイル プロパティを介して署名を調べると、署名はまだ有効であり、ユーザーは Windows AppBlocker をトリガーせずに署名を実行できます。すべてが良いです。
現在、証明書が取り消されていると言われ、crl を確認することで確認できます。CA の管理によると、1 か月間は無効になっているはずですが、署名はまだ有効です。
Serial Number: 16C40CA0000000002A60
Revocation Date: Aug 10 06:18:00 2015 GMT
CRL entry extensions:
X509v3 CRL Reason Code:
Cessation Of Operation
私が信じているのは、crlで提供されている理由がこれを引き起こすということです。RFC 3161の §4 Bullet 1 によると:
TSA が使用されなくなったが、TSA 秘密鍵が危険にさらされていない場合、当局の証明書は失効する必要があります。TSA から取り消された証明書に関連する reasonCode 拡張が CRL エントリ拡張に存在する場合、未指定 (0)、affiliationChanged (3)、superseded (4)、または cessationOfOperation (5) のいずれかに設定する必要があります。その場合、対応するキーで署名されたトークンは無効と見なされますが、失効時刻より前に生成されたトークンは有効なままです。TSA から取り消された証明書に関連する reasonCode 拡張が CRL エントリ拡張に存在しない場合、対応するキーで署名されたすべてのトークンは無効と見なされる必要があります。そのため、reasonCode 拡張を使用することをお勧めします。
だから私の質問/問題は次のもので構成されています:
- RFC 3161 はコード署名証明書または TSA のみに適用されますか?
- はいの場合、理由 5 CessationOfOperation による失効前に作成された場合、署名は引き続き有効ですか?
- はいの場合、有効期限が切れた後に証明書が危険にさらされていることが判明した場合、別の理由を使用して証明書を再度取り消すことができますか? まだ何百もの有効な署名があるかもしれません!