てしりこじり

しりがちいさいエンジニアがいるという

アプリケーションログ( ソース:CAPI2、ID4107 )の出力原因について

概要

WindowsServer 2008 R2 SP1 (Standard Edition )にてアプリケーションログにエラーが出力されていた。

  • イベントログ :アプリケーションログ
  • ソース :CAPI2
  • ID :4107
  • レベル :エラー
  • 内容

    次の自動更新 cab からサード パーティのルート一覧シーケンス番号を抽出できませんでした。http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab エラーは次のとおりです。現在のシステム時計または署名ファイルのタイムスタンプで確認すると、必要な証明書の有効期間が過ぎています。

オフライン環境なので、ルート証明書が取れないのは想定通り。
しかし出力されるサーバと出力されないサーバがあり、差が気になったので確認した。

原因

MSサポートに問合せた結果、以下の通りだった。

  • ルート証明書更新プログラム機能が原因

    • ルート証明書更新プログラム機能の動作は以下のとおり
      1. 各プログラム等で証明書の検証が行われる
      2. CA証明書がインストールされているか確認する
      3. インストールされておらず、ルート証明書更新プログラム機能が有効な場合、CA 証明書の取得が試行される
      4. ローカルに取得された authrootstl.cab のキャッシュ情報の有無を確認する
      5. キャッシュが存在している場合は、有効であるかを確認する
      6. 有効ではない (署名証明書が有効期限切れ等) 場合イベントが記録される
  • ルート証明書更新プログラムは、一度でもインターネット接続した環境では継続的に再取得しようとする

確かに構築時にインターネット接続したマシンのみ出力されていた。

対処

ルート証明書更新プログラムの無効化

手順

指示された手順を実施
今回は当該マシンがオフライン環境かつワークグループ環境※だった

  1. スタートメニューより、”gpedit.msc” と入力し、[OK] をクリックする
  2. ローカル グループ ポリシー エディターが開くので以下を確認する [コンピュータの構成] -> [Windowsの設定] -> [セキュリティの設定] -> [公開キーのポリシー] -> [証明書パス検証の設定]
  3. [証明書パス検証の設定] を右クリック、[プロパティ] を開く
  4. [ネットワークの取得] タブより、以下の通り設定を行い、[OK] をクリックする
    • [これらのポリシーの設定を定義する]  :有効
    • [Microsoft ルート証明書プログラムで証明書を自動更新する]  :無効

上記手順で以下のレジストリが作成され、ルート証明書更新プログラムが無効化される。

  • キー : HKEY_LOCAL_MACHINE\Software\policies\Microsoft\SystemCertificates\AuthRoot
  • REG_DWORD : DisableRootAutoUpdate
  • 値 :1

※補足

うむ。抑止された。