Windowsで信頼されたルート証明書リストを更新する方法

Windows がルート証明書をどのように処理するかお分かりいただけましたか? 基本的に、Windows は定期的な Windows Update サイクル中に Microsoft のサーバーから信頼されたルート証明書を取得することで、自身を最新の状態に保っています。これは、Microsoft 信頼されたルート証明書プログラムの一部です。SSL を使用する Web サイトにアクセスすると、そのチェーン内のルート CA がそのプログラムの一部である場合、Windows は自動的にそのルート証明書を取得して信頼済みストアに追加するため、手動で行う必要はありません。通常は週に 1 回更新されますが、マシンがオフラインであったり、厳格なファイアウォールの背後にあるなどの理由で Wi​​ndows が更新サーバーにアクセスできない場合は、リストが更新されません。その結果、SSL エラー、壊れたスクリプト、または証明書を信頼できなくなったためにアプリが実行を拒否するなどの問題が発生する可能性があります。そして確かに、特に隔離されたネットワークでは、手動で修正するのは面倒な場合があります。このガイドでは、システムがネットに接続できない場合でも、ルート証明書を手動で更新または管理する方法を説明します。

Windows で信頼されたルート証明書がオフラインまたは期限切れの場合に修復する方法

Windows 10 および 11 で信頼されたルート証明書を管理する

まず、ルート証明書リストを確認または管理したい場合、最も簡単な方法はmmc.exeを起動することです。コンソールがポップアップ表示されたら、「ファイル」 > 「スナップインの追加と削除」に移動し、「証明書」を選択して、コンピューターアカウントの管理を選択します。ローカルマシンを選択し、「追加」をクリックして「OK」をクリックします。「証明書」 > 「信頼されたルート証明機関」 > 「証明書」を展開します。すると、信頼されたルート証明書リスト全体が表示されます。ここで、疑わしい証明書を確認、削除、または必要に応じてエクスポートできます。

プロのヒント: 次のコマンドを使用して、PowerShell でリストをすばやく取得し、現在信頼されているものを確認することもできます。

Get-ChildItem cert:\LocalMachine\Root | Format-List

もうすぐ期限切れになるものを見つけるために短縮バージョンが必要な場合は、次を試してください。

Get-ChildItem cert:\LocalMachine\Root | Where-Object {$_. NotAfter -lt (Get-Date).AddDays(60)} | Select-Object NotAfter, Subject

実際には、特に重要な環境では、ルートストアを定期的に*チェック*することが賢明です。SysinternalsのSigcheckなどのセキュリティツールを使用して、証明書をMicrosoftの最新リストと比較してください。疑わしい証明書や失効した証明書を受け取った場合は、手動で削除してください。

自動ルート証明書更新の無効化または有効化

これは「なぜうまくいかないんだ?」と思う瞬間の一つです。Windowsは通常、ルート証明書の更新を自動的に処理しますが、テスト環境やエアギャップ環境などでこれを無効にする必要がある場合は、gpedit.mscまたはレジストリの調整で無効にすることができます。 「コンピューターの構成」>「管理用テンプレート」>「システム」>「インターネット通信の管理」>「インターネット通信」に進みます。 「ルート証明書の自動更新をオフにする」というポリシーを見つけます。これを有効にすると、Windowsによるルート証明書の自動更新が停止します。

グループ ポリシーが機能しない場合は、次のレジストリ キーを確認してください。

Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdate

「1」と表示されている場合、自動更新はオフになっています。「0」に変更するとオンに戻ります。もちろん、複雑に思えるかもしれませんが、Windowsは自動的に更新を行うので、覚えておいてください。ただし、ユーザーが停止を指示しない限りは。

Certutil を使用して信頼できるルート証明書を手動で取得する

これはインターネットに接続できない環境では非常に便利です。certutil.exeコマンドラインツールを使うと、Windows Update から最新の信頼されたルート証明書を取得し、ファイルに保存できます。インターネットにアクセスできるマシンで、管理者として次のコマンドを実行してください。

certutil.exe -generateSSTFromWU C:\Path\roots.sst

これにより、 roots.sstというファイルが作成されます。これは基本的に、Windowsが取得したすべての信頼されたルート証明書のコンテナです。このファイルをダブルクリックすると、保存されている証明書を確認したり、他のマシンに展開したりできます。ちょっとしたヒント:個々の証明書をエクスポートする代わりに、以下を使用してください。

certutil -syncWithWU

これにより、ローカル ストアが Microsoft の最新のものと同期され、それをエクスポートしたりスクリプト化して他のシステムを更新できるようになります。

スタンドアロンマシンまたはサーバーでは、SSTファイルを手動またはGPO経由で展開する方が簡単かもしれません。PowerShellを使用すると、SSTファイル内のすべての証明書を一度にインストールできます。

$sst = Get-ChildItem -Path C:\Path\roots.sst; $sst | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root

これにより、信頼できるルートが、デフォルトの 12 個程度から数百個にまで急速に増える可能性があります。

証明書信頼リスト(CTL)について

証明書信頼リスト(CTL)は、証明書そのもののリストではなく、Microsoftによって署名されたハッシュとメタデータのリストです。Windowsは、このCTLファイルをMicrosoftサイト(こちらへのリンク)から定期的に(月に2回程度)ダウンロードし、解凍して、信頼されたルートを更新します。このCABファイルを手動でダウンロードし、authroot.stlを抽出して、 を使用してインポートすることもできますcertutil -addstore "Root" path\authroot.stl。この方法であれば、Windows Updateを使用しなくても、信頼されたリストは最新の状態に保たれます。常に最新の状態を保つために、定期的に最新バージョンを入手してください。

隔離された環境でのルート証明書の更新

厳格な企業環境など、完全に隔離されたネットワーク内にいる場合は、ルートリストを手動で最新の状態に保つ必要があります。その方法は、インターネットに接続されたPCで最新のSSTをダウンロードし、USBメモリまたは共有フォルダ経由で隔離ネットワークにコピーすることです。その後、certutilを使ってインポートします。

certutil -addstore -f Root path\roots.sst

あるいは、隔離されたすべてのマシンからアクセスできる共有ネットワークドライブを設定している場合は、レジストリキーRootDirURLを変更して共有フォルダを指定することにより、GPO 経由で展開を自動化できます。これにより、コンピュータはそこからルートを取得して更新できるようになります。

Windows 7 および XP でのルート証明書の更新

はい、Windows 7はまだあちこちで使われていますが、Microsoftのサポートが終了したため、これは困った問題です。Windows 7で最新のルート証明書を取得するには、KB2813430アップデート(オフラインマシンで信頼済み証明書を更新できるようにする)をインストールしてください。インストールが完了したら、以下のコマンドでSSTファイルを生成します。

certutil.exe -generateSSTFromWU c:\ps\roots.sst

次に、SST を MMC 証明書スナップインの「信頼されたルート証明機関」にインポートします。XP の場合は、勇気があれば古いrootsupd.exeツールを試すこともできますが、注意が必要です。これらの更新は古く、ツール自体も古くなっているかサポートされていない可能性があります。新しい Windows システムで certutil を使用して生成/更新し、ファイルを元に戻すことをお勧めします。

信頼されたルート鍵の更新は、特にネットワークが切断された環境では少々面倒です。しかし、certutilコマンド、手動インポート、そして慎重な管理を組み合わせれば、更新は可能です。そして、SSLワークフローをスムーズかつ安全に保つために不可欠です。

まとめ

  • mmc.exeを使用して、現在の信頼されたルートを確認します。
  • GPO またはレジストリの調整によりオフラインで作業する場合は自動更新を無効にします。
  • オンラインのマシンでcertutil.exe -generateSSTFromWUを使用して最新のルートを取得します。
  • 必要に応じて、SST ファイルを手動で、または GPO 経由で展開します。
  • より高度な信頼管理のために CTL ファイルを理解します。

まとめ

インターネットに接続できない環境でルート証明書を最新の状態に更新するのは簡単ではありませんが、不可能ではありません。重要なのは、オンラインマシンから最新のデータを取得し、それをオフラインマシンに慎重にプッシュすることです。面倒な作業ではありませんが、環境によっては不可欠です。厳しいネットワーク制限のある環境では、この方法が少しでも時間やストレスを軽減してくれることを願っています。信頼チェーンの維持に役立つことを願っています。