[障害情報] crypt32 (Windows XP, Windows Server 2003)、Microsoft-Windows-CAPI2 (Windows Vista 以降) のイベント
先週より、イベント ログに、crypt32 (Windows XP, Windows Server 2003)、Microsoft-Windows-CAPI2 (Windows Vista 以降) のイベントが大量に記録されという問題の報告が寄せられております。
この問題の結果、ルート証明書更新プログラムが正しく稼動しなくなり、ルート証明書更新プログラムで自動インストールされるルートCA証明書が正しくインストールされないという問題が発生していました。
原因となる点についてはすでに修正がされており、事象については解消されておりますが、ご参考までに当 Blog でも情報をお知らせいたします。
================================================
[現象]
イベント ログに、crypt32 (Windows XP, Windows Server 2003)、Microsoft-Windows-CAPI2 (Windows Vista 以降) のイベントが大量に記録されます。
下記がイベントの内容です。
<エラー>
・windows XP, windows Server 2003
イベントの種類: エラー
イベント ソース: crypt32
イベント カテゴリ: なし
イベント ID: 11
説明:
<https://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab> にある自動更新 cab ファイルからサード パーティのルート一覧を抽出できませんでした。エラー: 現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。
・Windows Server 2008, Vista
イベントの種類: エラー
イベント ソース: Microsoft-Windows-CAPI2
イベント ID: 11
説明:
<https://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab> にある自動更新 cab ファイルからサード パーティのルート一覧を抽出できませんでした。エラー: 現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。
[原因]
今回発生しているエラー イベントは、インターネット上の Windows Update サイトから取得した CAB ファイル (www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab) に含まれる ルート CA の信頼リスト (authroot.stl) の署名の検証に失敗したことが原因で発生します。
署名の検証に失敗するのは、信頼リストの署名に利用されている弊社の証明書 (Microsoft Certificate Trust List Publisher) の有効期限切れ (7 月 9 日に有効期限切れ) が原因です。
この問題は、私ども、マイクロソフトの問題と認識しています。
製品をご利用くださっておりますお客様には、大変ご迷惑をお掛けしまして申し訳ございません。
- 詳細
証明書の検証処理においては、まず自身のコンピューター内の信頼されたルート証明機関のリストに検証対象の証明書を発行した証明機関が含まれるかの確認を行います。そして、自身のコンピューター上の信頼する証明機関のリストに発行元の証明機関が含まれない場合は、インターネット上の Windows Update サイトに公開されているルート CA の信頼リスト (authroot.stl) を取得し、目的の証明機関が含まれているかどうかの確認を行います。
この処理の中で、Windows Update サイトから取得した CAB ファイル (www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab) に含まれる ルート CA の信頼リスト (authroot.stl) の署名の検証を実施した際、署名を行っている署名証明書の有効性が検証されます。
今回、信頼リストの署名に利用されている弊社の証明書 (Microsoft Certificate Trust List Publisher) の有効期限切れ (7 月 9 日に有効期限切れ) が発生しているために、このイベントが記録されています。
弊社では、弊社の証明書 (Microsoft Certificate Trust List Publisher) の有効期限切れに伴い、信頼リストの署名に利用されている弊社の証明書 (Microsoft Certificate Trust List Publisher) および 信頼リストの更新を実施しました。また、Windows Update サイトのファイル (authroot.stl および authrootstl.cab) についてもすでに更新し、新しい有効期限が設定されているファイルを展開しております。
しかしながら、authroot.stl および authrootstl.cab は、キャッシュされ (既定ではファイル取得後 7 日間)、これらのファイルがローカルに存在する場合には、新たにファイル取得をしません。
更新前の authroot.stl および authrootstl.cab のキャッシュが存在している場合、キャッシュを使用しようとしますが、これらのファイルの署名に使用されている証明書が 7 月 9 日 以降は有効期限が切れた状態となっているため、検証に失敗しエラーが発生します。
[対処策]
信頼リストの署名に利用されている弊社の証明書 (Microsoft Certificate Trust List Publisher) および 信頼リストは更新され、すでにWindows Update サイトに配置されています。
このため、クライアント端末側のキャッシュが既定で 7 日間であるため、キャッシュの切り替わりが発生したタイミングで問題は自然解消します。
本日時点では、すでにキャッシュの切り替わりのための期間は過ぎているため、問題は自然に解消している見込みとなります。
また弊社に寄せられているお問い合わせに起きましても、殆どすべてのお客様にて解消の報告がされております。
万が一、引き続きイベントが記録され続ける場合には、下記の方法にて、キャッシュを手動で削除し、端末を再起動することで現象が回避するかご確認ください。
(a) Windows XP / Windows Server 2003 の場合
(a-1) ユーザー アカウントのキャッシュをクリアする。
1) コマンド プロンプトを開きます。
[スタート] - [ファイル名を指定して実行] を順に選択し、cmd と入力し、OK ボタンをクリックします。
2) 以下のコマンドを実行します。
certutil -urlcache * delete
(a-2) システム アカウントのキャッシュをクリアする。
1) コマンド プロンプトを開きます。
[スタート] - [ファイル名を指定して実行] を順に選択し、cmd と入力し、OK ボタンをクリックします。
2) 以下のコマンドを実行し、システム権限でコマンド プロンプトを起動します。
at hh:mm /interactive cmd.exe
* hh:mm には現在の時間 + 1 分を入力してください。例えば現在の時間が 15:00 の場合 15:01 と入力します。
これにより、指定した時間にシステム権限でコマンド プロンプトが起動します。
3) システム権限で起動したコマンド プロンプトにて以下のコマンドを実行し、キャッシュをクリアします。
certutil -urlcache * delete
(b) Windows Vista / Windows Server 2008 以降の場合 (b-1) ユーザー アカウントのキャッシュをクリアする。
1) 管理者権限でコマンド プロンプトを開きます。
[スタート] - [検索の開始] に cmd と入力し、表示される cmd を右クリック後、"管理者として実行" を選択します。
2) 以下のコマンドを実行します。
certutil -urlcache * delete
(b-2) システム アカウントのキャッシュをクリアする。
1) 下記サイトより PsTools をダウンロードして解凍します。
<https://technet.microsoft.com/ja-jp/sysinternals/bb897553(en-us).aspx>
2) 管理者権限でコマンド プロンプトを開きます。
[スタート] - [検索の開始] に cmd と入力し、表示される cmd を右クリック後、"管理者として実行" を選択します。
3) カレント ディレクトリを PsTools の解凍先に移動し、以下のコマンドを実行します。
Psexec.exe -i -s cmd
4) システム権限で起動したコマンド プロンプトにて以下のコマンドを実行し、キャッシュをクリアします。
certutil -urlcache * delete
(c) 確認
上記の作業後にエラーが解消しているか確認してください。
上記の作業のみでエラーイベントが解消しない場合は、メモリ内に展開されているキャッシュが影響している可能性があるため、端末を再起動してエラーが解消しているか確認してください。