システムエンジニアXの「プログラミング以外」の話 50代会社員SEのお仕事・副業・システム運用の経験談

【注意】EdgeのローカルCA失効チェック強制で社内Webが全停止する罠

公開:

※本記事には広告を含みます。

はじめに

セキュリティ監査やCISベンチマーク、Microsoftセキュリティベースラインの推奨設定に従って、グループポリシーを片っ端から「有効」にして適用した翌朝、全社員から「社内ポータルや経費精算システムが証明書エラー(NET::ERR_CERT_Unable_To_Check_Revocation 等)で一切開けなくなった!」という大障害の連絡を受けたことはないでしょうか。

私も過去に、セキュリティ強化プロジェクトでEdgeの証明書関連ポリシー『ローカル トラスト アンカーのオンライン失効チェックを要求する(RequireOnlineRevocationCheckForLocalAnchors)』を検証環境だけで軽く確認して本番展開したところ、社内プライベート認証局(AD CS)のCRL配布ポイント(CDP)が一部ネットワークから到達不能だったために、拠点全体の業務システムがストップして冷や汗をかいた経験があります。

この記事では、RequireOnlineRevocationCheckForLocalAnchors ポリシーの技術的な意味と、なぜ社内PKI環境で全社アクセス停止を引き起こすのかというメカニズム、そして安全に適用するための事前チェックコマンドと復旧手順を解説します。

読み終えるころには、自社の証明書基盤(AD CS等)でこのポリシーを有効化してよいかどうかを正確に判断できるようになります。

この記事の要点

  • RequireOnlineRevocationCheckForLocalAnchors は、社内プライベートCA(ローカル追加したルート証明書)に対してもCRL/OCSPへのオンライン疎通を必須化するポリシー
  • 社内CAのCRL配布ポイント(CDP)が到達不能・期限切れ・未設定の場合、「ソフトフェイル(大目に見る)」ではなく「ハードフェイル(即座に接続遮断)」となり社内Webが全滅する
  • 有効化する前には必ず certutil -url <証明書ファイル> で全クライアント網からCRLが正常取得できるか検証する必要がある
項目 動作確認・検証環境
検証年月 2026年9月
対象OS Windows Server 2022 (AD CS) / Windows 11 Pro 23H2・24H2
対象ブラウザ Microsoft Edge Stable 128 / 129以降
必要権限 Domain Admins / PKI管理者 またはローカル管理者権限

結論:RequireOnlineRevocationCheckForLocalAnchors を安易に有効化してはいけない理由

結論からお伝えすると、社内でプライベート認証局(Active Directory 証明書サービス / OpenSSL自己署名CAなど)を運用している環境において、CRL配布ポイント(CDP)の可用性と到達性を確認せずに RequireOnlineRevocationCheckForLocalAnchors を「有効(1)」にすると、社内HTTPSサイトがすべて閲覧不能になります。

そもそも「ローカルトラストアンカー」とは何か?

ブラウザ(Edge)は、ルート証明書を以下の2種類に区別して扱っています。

  1. パブリックトラストアンカー: Windowsに最初から組み込まれている商用認証局(DigiCert, GlobalSign, Let's Encryptなど)
  2. ローカルトラストアンカー(Local Anchors): 企業の管理者がGPOや手動で「信頼されたルート証明機関」ストアに追加した 社内プライベートCA(オレオレ認証局含む)

通常、Edgeは社内プライベートCAが発行したサーバー証明書については、「社内閉域網ではCRLサーバーが用意されていないケースも多い」と配慮し、厳格なオンライン失効チェックを行わない(または確認できなくてもエラーにしない=ソフトフェイル)設計になっています。

しかし、RequireOnlineRevocationCheckForLocalAnchors を「有効」にすると、この配慮が撤廃され、「CRL(証明書失効リスト)またはOCSPサーバーにオンラインで通信でき、かつ有効期限内の正常な応答が返ってこない限り、通信を即座にブロックする(ハードフェイル)」 という極限まで厳格なモードに切り替わります。

関連する2つの失効チェックポリシーの比較表

Edgeには名前が似た2つの失効チェックポリシーが存在します。両者の違いとリスク度を以下の表にまとめました。

レジストリ値名 GPOの日本語表示名 役割・動作 社内Web停止リスク
EnableOnlineRevocationChecks オンライン OCSP/CRL チェックを実行するかどうかを指定する そもそもオンラインでの失効確認通信(OCSP/CRL)を行うかどうかの大枠スイッチ(既定:有効) 中(プロキシ認証等でCRL通信が詰まると遅延・失敗する)
RequireOnlineRevocationCheckForLocalAnchors ローカル トラスト アンカーのオンライン失効チェックを要求する 社内プライベートCAの証明書に対してもオンライン失効チェックを強制する(前提として上記の有効化が必要) 極大(CDP未整備・期限切れで社内HTTPSが即座に全停止)

社内Webアクセスが全停止する3つの典型パターン

現場のインフラ環境で RequireOnlineRevocationCheckForLocalAnchors を有効化した途端に業務システムが開けなくなる原因は、主に以下の3パターンです。

パターン1:OpenSSLや簡易構築した社内CAで「CRL配布ポイント」が空欄または到達不能

検証用や社内ツール用にOpenSSLコマンド等で簡易発行したCA証明書やサーバー証明書には、そもそも「CRL配布ポイント(CDP)」の拡張領域が含まれていないか、ldap:///CN=... のようなActive Directoryドメイン外の端末(VPN端末やWi-Fi端末)から名前解決できないURLしか書かれていないケースが多々あります。

パターン2:社内CAサーバーの電源オフ、またはCRLの有効期限切れ

過去に情シス担当者がAD CS(Active Directory 証明書サービス)を構築したものの、現在は誰もメンテナンスしておらず、CRL(.crl ファイル)の更新期間(デフォルト1週間など)が切れたまま放置されているパターンです。
オンラインチェックが強制されると、Edgeは「CRLの有効期限が切れている=失効状態を確認できない」と判定し、サーバー証明書自体の有効期限が数年残っていてもアクセスを遮断 します。

パターン3:プロキシサーバーが社内CDPサーバーへのHTTP通信をブロックしている

クライアントPCがWebアクセス時に必ず社外プロキシ(またはクラウドSWG:Zscaler / Netskope等)を経由する構成になっている場合、証明書に記載された社内CRLのURL(例:http://pki.corp.local/CertEnroll/CorpCA.crl)へのリクエストまで社外プロキシへ飛んでしまい、名前解決できずに失効チェックが失敗します。


適用前に必ず実行すべき「失効チェック疎通テスト」手順

このポリシーを本番GPOで有効化する前に、必ずクライアント端末上で社内Webシステムの証明書(.cer ファイル)をエクスポートし、以下のコマンドでCRL/OCSPの正常性を確認してください。

1. certutil -url によるGUI検証ツール

管理者または一般ユーザーのコマンドプロンプト/PowerShellで以下を実行します。

# 社内Webサーバーからエクスポートした証明書ファイルを指定してURL取得ツールを起動
certutil.exe -url "C:\temp\internal_webapp.cer"

起動した「URL 取得ツール」ウィンドウで、右下の「取得先」から 「CRL(システムから)」 および 「OCSP(AIAから)」 を選択し、「取得」ボタンをクリックします。
状態欄がすべて 「確認済み(Verified)」 になれば合格です。1つでも「失敗」「期限切れ」「オフライン」が出る場合、ポリシーを有効化するとそのサイトは開けなくなります。

2. PowerShellによる失効チェックスクリプト

コマンドラインだけで対象の証明書チェーンと失効チェック(オンライン強制)が通るかをテストするには、以下のPowerShellスクリプトを実行します。

# 調査対象の社内HTTPS URLを指定
$TargetUrl = "https://portal.corp.local/"

# サーバー証明書を取得してオンライン失効チェックをテスト
$Req = [System.Net.HttpWebRequest]::Create($TargetUrl)
$Req.AllowAutoRedirect = $false
try { $null = $Req.GetResponse() } catch {}

$Cert = $Req.ServicePoint.Certificate
if ($null -ne $Cert) {
    $Cert2 = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($Cert)
    $Chain = New-Object System.Security.Cryptography.X509Certificates.X509Chain
    # オンライン失効チェックを強制
    $Chain.ChainPolicy.RevocationMode = [System.Security.Cryptography.X509Certificates.X509RevocationMode]::Online
    $Chain.ChainPolicy.RevocationFlag = [System.Security.Cryptography.X509Certificates.X509RevocationFlag]::EntireChain

    $IsValid = $Chain.Build($Cert2)
    Write-Host "チェーン検証結果: $IsValid"
    foreach ($status in $Chain.ChainStatus) {
        Write-Warning "Status: $($status.Status) - $($status.StatusInformation)"
    }
}

ここで RevocationStatusUnknown や OfflineRevocation という警告が出力された場合、RequireOnlineRevocationCheckForLocalAnchors を有効化すると確実にブロックされます。


障害発生時の緊急切り戻し(ロールバック)手順

万が一、本ポリシーの適用によって社内Webシステムが開けなくなった場合は、GPOを「無効」または「未構成」に戻すとともに、以下のPowerShellコマンド(管理者権限)でクライアント側のレジストリを即座に無効化(0)して復旧させます。

# 管理者権限で実行:ローカルトラストアンカーのオンライン失効チェック強制を解除 (0 = 無効)
$EdgePolicyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Edge"
if (Test-Path -Path $EdgePolicyPath) {
    Set-ItemProperty -Path $EdgePolicyPath -Name "RequireOnlineRevocationCheckForLocalAnchors" -Value 0 -Type DWord
}

# 現在の設定値を確認
Get-ItemProperty -Path $EdgePolicyPath -Name "RequireOnlineRevocationCheckForLocalAnchors" -ErrorAction SilentlyContinue

実行後、Edgeのアドレスバーに edge://policy と入力して「ポリシーの再読み込み」をクリックすれば、PCを再起動することなく即座に社内Webシステムへアクセスできるようになります。


よくある質問(FAQ)

Q: Microsoftのセキュリティベースラインではこのポリシーは推奨されていますか?

A: Microsoft Security BaselineやCIS Benchmarkの一部プロファイルでは有効化が記載されている場合がありますが、それは「組織内で高可用性なPKI(HTTPベースのCRL配布ポイントやOCSPレスポンダー)が完全に整備・監視されていること」が大前提となっています。中小規模のAD CSや自己署名証明書を使っている環境では、ベースラインから意図的に除外(無効化)するのが正しい設計判断です。

Q: 社内CAのCRL配布ポイント(CDP)はどこに配置するのがベストプラクティスですか?

A: Active DirectoryのLDAPパス(ldap:///...)だけでなく、必ず社内・VPN・Wi-Fiのすべてのクライアントから認証なしでアクセスできる HTTPサーバー(http://pki.corp.local/crl/...) に配置してください(※CRL自体は電子署名されているため、HTTPSではなくHTTPで公開するのがPKIの標準仕様です)。また、Windowsのプロキシ例外リスト(<local> や社内ドメイン)にそのHTTPサーバーが含まれていることも確認してください。

Q: EdgeだけでなくGoogle Chromeでも同じトラブルは起きますか?

A: はい、起きます。EdgeとChromeは同じChromiumベースであり、OS(Windows CryptoAPI)の証明書検証機構と連携しています。Chromeにも同名のポリシー(RequireOnlineRevocationCheckForLocalAnchors)が存在するため、両方のブラウザを管理している場合は同じ基準で設計する必要があります。


まとめ

Edgeの証明書失効チェックポリシー RequireOnlineRevocationCheckForLocalAnchors に関する運用ポイントは以下の通りです。

  • このポリシーを「有効(1)」にすると、社内プライベートCAが発行した証明書に対してもオンラインでのCRL/OCSP到達が必須となる
  • 社内CAのCRL配布ポイント(CDP)が未設定・到達不能・期限切れの場合、社内HTTPSサイトがすべて証明書エラーで停止する
  • 適用前には必ず certutil -url やPowerShellで、全ネットワークセグメント(VPN含む)からCRLが正常取得できるか検証する
  • PKIの高可用性運用が難しい環境では、無理に有効化せず 「無効(0)」または「未構成」 を維持する

セキュリティベースラインの項目は「すべて有効にすれば安全」というわけではなく、自社のインフラ構成との整合性を見極めることがシニアエンジニアの重要な役割です。

関連記事

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。

OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。 また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。

この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。 すべての操作は自己責任で行ってください。

最後までお読みいただきありがとうございました。
またお会いしましょう!