Windowsで信頼されたルート証明書を更新する方法|オフライン環境・隔離ネットワーク完全ガイド
すべてのWindowsには、MicrosoftのWebサイトからルート証明書を自動的に更新する機能が組み込まれています。Microsoftは「Microsoft Trusted Root Certificate Program(信頼されたルート証明書プログラム)」の一環として、クライアントやWindowsデバイス向けの信頼された証明書のリストをオンラインリポジトリで管理・公開しています。検証対象の証明書のチェーンがこのプログラムに参加しているルートCAに遡れる場合、システムはWindows Updateサーバーからそのルート証明書を自動的にダウンロードし、信頼された証明書として追加します。
Windowsは信頼されたルート証明書リスト(CTL:Certificate Trust List)を週に1回更新します。Windows Updateに直接アクセスできない場合、システムはルート証明書を更新できません。そのため、SSL証明書が信頼されていないCAによって署名されたWebサイトの閲覧時にエラーが発生したり、署名済みのスクリプトやアプリケーションのインストール・実行時に問題が起こったりする可能性があります。
本記事では、インターネットに直接アクセスできない切断された(隔離された)ネットワーク環境やコンピューター・サーバーにおいて、TrustedRootCA内のルート証明書リストを手動で更新する方法を解説します。
目次
- Windows 10 / 11における信頼されたルート証明書の管理
- Windowsのルート証明書自動更新を無効化/有効化する方法
- Certutilを使ったWindows Updateからのルート証明書ダウンロード
- Windowsにおける証明書信頼リスト(CTL)とは
- 隔離環境でGPOを使ってルート証明書を更新する方法
- Windows 7でルート証明書を更新する方法
- Windows XPでRootsupd.exeツールを使ってルート証明書を更新する方法
注意: コンピューターがプロキシサーバー経由でインターネットにアクセスしている場合、Microsoftはルート証明書を自動更新できるよう、MicrosoftのWebサイトへの直接アクセス(バイパス)を開放することを推奨しています。ただし、企業のセキュリティポリシー上、これが常に可能とは限りません。
Windows 10 / 11における信頼されたルート証明書の管理
Windowsコンピューター上の信頼されたルート証明書の一覧を確認する方法を見ていきましょう。
- Windows 11/10/8.1/7またはWindows Server 2022/2019/2016のルート証明書ストアを開くには、mmc.exeコンソールを実行します。
- ファイル→スナップインの追加と削除を選択し、スナップイン一覧から「証明書」(certmgr)を選んで追加をクリックします。
- ローカルの「コンピューターアカウント」の証明書を管理することを選択します。
- 次へ→OK→OKで確定します。
- 「証明書」ノードを展开し、「信頼されたルート証明機関」ストアを開きます。ここに、そのコンピューター上の信頼されたルート証明書の一覧が表示されます。
mmcコンソールでは、任意の証明書の詳細情報を表示したり、信頼済みリストから削除したりすることができます。
また、PowerShellを使えば、有効期限付きの信頼されたルート証明書一覧を取得できます。
Get-Childitem cert:\LocalMachine\root | format-list期限切れの証明書、または60日以内に期限切れとなる証明書だけを表示する場合は次のコマンドを使用します。
Get-ChildItem cert:\LocalMachine\root | Where {$_.NotAfter -lt (Get-Date).AddDays(60)} | select NotAfter, Subjectセキュリティの観点から、Sigcheckツールを使って、コンピューターの証明書ストアに不審な証明書や失効した証明書が含まれていないか定期的にチェックすることをおすすめします。このツールを使うと、コンピューターにインストールされている証明書リストと、Microsoft Webサイト上のルート証明書リスト(最新の証明書を含むオフラインファイルauthrootstl.cabもダウンロード可能)を比較できます。
また、「エクスポート/インポート」機能を使えば、ルート証明書ファイルをWindowsコンピューター間で手動で移動することも可能です。
- 証明書を右クリックして「すべてのタスク」→「エクスポート」を選択すると、.CERファイルとして出力できます。
- 別のコンピューターでは、「すべてのタスク」→「インポート」を選択して証明書を読み込みます。
Windowsのルート証明書自動更新を無効化/有効化する方法
前述のとおり、Windowsはルート証明書を自動的に更新します。この自動更新は、グループポリシー(GPO)またはレジストリ経由で有効化・無効化できます。
ローカルグループポリシーエディター(gpedit.msc)を開き、コンピューターの構成→管理用テンプレート→システム→インターネット通信の管理→インターネット通信へ移動します。
このセクションにある「自動ルート証明書更新を無効にする」(Turn off Automatic Root Certificates Update)ポリシーにより、Windows Updateサイトからのルート証明書の自動更新を無効化できます。デフォルトではこのポリシーは「未構成」になっており、Windowsは常にルート証明書の自動更新を試みます。
GPOで未構成になっているのにルート証明書が自動更新されない場合は、レジストリでこの設定が手動で有効化されていないか確認してください。PowerShellで以下のコマンドを実行してレジストリ値をチェックします。
Get-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\SystemCertificates\AuthRoot' -Name DisableRootAutoUpdateコマンドの実行結果でDisableRootAutoUpdateレジストリパラメーターの値が1の場合、そのコンピューターではルート証明書の更新が無効化されています。有効化するには値を0に変更します。
Certutilを使ったWindows Updateからのルート証明書ダウンロード
Certutil.exeは証明書を管理するため的CLIツールです(Windows 10で導入され、Windows 7向けには個別の更新プログラムとして提供されています)。このツールを使うと、Windows Updateから最新のルート証明書リストをダウンロードし、SSTファイルとして保存できます。
インターネットに直接アクセスできるWindows 10または11のコンピューターでSSTファイルを生成するには、管理者権限のコマンドプロンプトを開いて次のコマンドを実行します。
certutil.exe -generateSSTFromWU C:\PS\roots.sstUpdated SST file. CertUtil: -generateSSTFromWU command completed successfully.
実行後、指定したディレクトリに最新のルート証明書リストを含むSSTファイルが生成されます。ダブルクリックで開くと、信頼されたルート証明書を格納するコンテナーファイルであることがわかります。
見慣れた証明書管理スナップインが開き、そこから任意の証明書をエクスポートできます。筆者の環境では358件の証明書がリストに含まれていました。当然ながら、証明書を1つずつエクスポートして個別にインストールするのは非効率です。
ヒント: certutil -syncWithWUコマンドを使うと、個別の証明書ファイルを生成できます。こうして取得した証明書はGPO経由でWindowsデバイスに展開できます。
SSTファイル内のすべての証明書をインストールし、コンピューターの信頼されたルート証明書リストに追加するには、次のPowerShellスクリプトを使用します。
$sstStore = ( Get-ChildItem -Path C:\ps\rootsupd\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Rootcertmgr.mscスナップインを実行し、すべての証明書が「信頼されたルート証明機関」に追加されたことを確認しましょう。筆者のWindows 11環境では、ルート証明書の数が34から438に増加しました。
なお、クリーンインストール直後のWindowsのルートストアには少数の証明書しか含まれていません。コンピューターがインターネットに接続していれば、デバイスがHTTPSサイトやSSL証明書にアクセスした際、信頼チェーン内にMicrosoft CTLのフィンガープリントを持つ証明書があれば、残りのルート証明書は自動的に(オンデマンドで)インストールされます。したがって通常は、Microsoftが信頼するすべての証明書を直ちにローカルの証明書ストアに追加する必要はありません。
Windowsにおける証明書信頼リスト(CTL)とは
証明書信頼リスト(CTL:Certificate Trust List)とは、信頼された当事者(この場合はMicrosoft)によって署名されたデータ(証明書ハッシュなど)のリストです。Windowsクライアントは、信頼されたすべてのルートCAのハッシュを格納したこのCTLを、Windows Updateから定期的にダウンロードします。重要なのは、CTL自体には証明書本体は含まれず、ハッシュと属性(Friendly Nameなど)のみが格納されているという点です。Windowsデバイスは、必要に応じて証明書信頼リストから信頼された証明書をダウンロードできます。
CTLファイルは手動でダウンロードしてインストールすることも可能です。まず、https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab (月2回更新)からファイルをダウンロードします。任意のアーカイバー(エクスプローラーでも可)でauthrootstl.cabアーカイブの内容を展開すると、単一のauthroot.stlファイルが含まれています。
Authroot.stlファイルは、証明書信頼リスト形式で信頼された証明書のサムプリントのリストを格納するコンテナーです。
このCTLファイルは、次のcertutilコマンドで信頼されたルート証明機関ストアにインストールできます。
certutil -enterprise -f -v -AddStore "Root" "C:\PS\authroot.stl"root "Trusted Root Certification Authorities" CTL 0 added to store. CertUtil: -addstore command completed successfully.
証明書管理コンソール(信頼されたルート証明機関→証明書→すべてのタスク→インポート)から証明書をインポートすることもできます。その際、サムプリントを含むSTLファイルのパスを指定してください。
コマンド実行後、証明書マネージャーコンソール(certmgr.msc)の「信頼されたルート証明機関」コンテナー内に新しい「証明書信頼リスト」セクションが表示されます。
同様の手順で、ルート証明書プログラムから除外された失効済み(許可されていない)証明書のリストもダウンロード・インストールできます。disallowedcertstl.cabファイル(https://ctldl.windowsupdate.com/msdownload/update/v3/static/trustedr/en/disallowedcertstl.cab)をダウンロードして展開し、次のコマンドで信頼されていない証明書ストアに追加します。
certutil -enterprise -f -v -AddStore disallowed "C:\PS\disallowedcert.stl"隔離環境でGPOを使ってルート証明書を更新する方法
インターネットから隔離されたActive Directoryドメイン内でルート証明書を定期的に更新する必要がある場合は、グループポリシーを使ってドメイン参加コンピューターのローカル証明書ストアを更新する、やや複雑なスキームがあります。切断されたWindowsネットワーク内のユーザーコンピューターでルート証明書を更新する方法はいくつかあります。
方法1: ルート証明書ファイルを定期的に手動でダウンロードし、隔離ネットワークにコピーする方式です。Microsoftの最新ルート証明書ファイルは次のコマンドでダウンロードできます。
certutil.exe –generateSSTFromWU roots.sstその後、SCCMまたはGPOのPowerShellスタートアップスクリプト経由で、このファイルからルート証明書を展開します。
$sstStore = (Get-ChildItem -Path \\fr-dc01\SYSVOL\woshub.com\rootcert\roots.sst )
$sstStore | Import-Certificate -CertStoreLocation Cert:\LocalMachine\Root方法2: 次のコマンドでMicrosoftの最新ルート証明書をダウンロードする方式です。
Certutil -syncWithWU -f \\fr-dc01\SYSVOL\woshub.com\rootcert\指定した共有ネットワークフォルダーに、多数のルート証明書ファイル(CRT形式。authrootstl.cab、disallowedcertstl.cab、disallowedcert.sst、thumbprint.crtなどのファイルを含む)が生成されます。
次に、グループポリシーの基本設定(Group Policy Preferences)を使って、HKLM\Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdateキーのRootDirURLレジストリパラメーターの値を変更します。このパラメーターは、Windowsコンピューターが新しいルート証明書を受け取る共有ネットワークフォルダーを指すようにします。ドメインのGPMC.mscコンソールを実行し、新しいGPOを作成してポリシー編集モードに切り替え、コンピューターの構成→基本設定→Windowsの設定→レジストリセクションを展開します。以下の設定で新しいレジストリプロパティを作成します。
- 操作(Action): 更新(Update)
- ハイブ(Hive): HKEY_LOCAL_MACHINE
- キーのパス(Key Path): Software\Microsoft\SystemCertificates\AuthRoot\AutoUpdate
- 値の名前(Value name): RootDirURL
- 種類(Type): REG_SZ
- 値のデータ(Value data): file://\\fr-dc01\SYSVOL\woshub.com\rootcert\
あとはこのポリシーをコンピューターのOUにリンクし、クライアント側でGPO設定が更新された後に、証明書ストアに新しいルート証明書が反映されているかを確認します。
なお、コンピューターの構成→管理用テンプレート→システム→インターネット通信の管理→インターネット通信にあるGPO設定「自動ルート証明書更新を無効にする」は、「無効」または「未構成」にしておく必要があります。
Windows 7でルート証明書を更新する方法
Windows 7は現在サポート終了(EOS)段階ですが、依然として多くのユーザーや企業が使用しています。
クリーンなWindows 7イメージをインストールした後、多くの最新プログラムやツールが動作しないことに気づくかもしれません。それらは新しい証明書で署名されているためです。特に、ルート証明書を更新しないと、Windows 7 SP1 x64に.Net Framework 4.8やMicrosoft Visual Studio(vs_Community.exe)をインストールできないという報告があります。
The installer manifest failed signature validation.
または
.NET Framework has not been installed because a certificate chain could not be built to a trusted root authority.
Windows 7でルート証明書を更新するには、まずMSU更新プログラムKB2813430をダウンロードしてインストールします(https://support.microsoft.com/en-us/topic/an-update-is-available-that-enables-administrators-to-update-trusted-and-disallowed-ctls-in-disconnected-environments-in-windows-0c51c702-fdcc-f6be-7089-4585fad729d6)。
その後、certutilを使ってルート証明書を含むSSTファイルを生成します(現在のコンピューターまたは別のコンピューター上で実行)。
certutil.exe -generateSSTFromWU c:\ps\roots.sst次に、証明書を信頼されたものとしてインポートします。
MMCを起動→スナップインの追加→証明書→コンピューターアカウント→ローカルコンピューターの順に選択します。「信頼されたルート証明機関」を右クリックし、すべてのタスク→インポートを選択します。SSTファイルを指定し(ファイルの種類で「Microsoft シリアル化された証明書ストア — *.sst」を選択)、開く→「証明書をすべて次のストアに配置する」→信頼されたルート証明機関を選択して完了です。
Windows XPでRootsupd.exeツールを使ってルート証明書を更新する方法
Windows XPでは、rootsupd.exeユーティリティを使ってコンピューターのルート証明書を更新していました。このツール内のルート証明書および失効証明書のリストは定期的に更新され、個別の更新プログラムKB931125(ルート証明書の更新)として配布されていました。現在でも使えるのか見てみましょう。
- rootsupd.exeユーティリティを次のリンクからダウンロードします:
https://download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/rootsupd.exe。執筆時点(2021年1月)ではこのリンクは機能しておらず、Microsoftは公開から削除しました。現在はKasperskyのWebサイトからrootsupd.exeをダウンロードできます — https://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip - Windowsルート証明書をインストールするには、単にrootsupd.exeファイルを実行するだけです。しかし今回は、内容をより詳しく調べてみましょう。次のコマンドで実行ファイルから証明書を抽出します:
rootsupd.exe /c /t: C:\PS\rootsupd - 証明書はauthroots.sst、delroot.sstなどのSSTファイルに格納されています。証明書の削除やインストールには、次のコマンドを使用できます。
updroots.exe authroots.sst
updroots.exe -d delroots.sst
しかし、ご覧のとおり、これらの証明書ファイルは2013年4月4日(Windows XP公式サポート終了の約1年前)に作成されたものです。つまり、それ以降このツールは更新されておらず、最新の証明書をインストールする用途には使えません。
ただし、Windows 10/11のcertutilツールでroots.sstをダウンロードし、そのファイルをWindows XPにコピーして、updroots.exeで証明書をインストールすることは可能です。
updroots.exe c:\temp\roots.sstなお、updroots.exeツールは、デバイス上のMicrosoftルートCAを壊す可能性があるため、Windows 10 1803以降およびWindows 11の最新ビルドでの使用は推奨されていないという情報もあります。
本記事では、インターネットから隔離された(切断された環境の)Windowsネットワークコンピューターにおいて、信頼されたルート証明書を更新するいくつかの方法を紹介しました。
-
Windows 10のシャットダウンコマンド完全ガイド|構文・全オプション・実用例を徹底解説
PCをシャットダウンする方法は、スタートメニューから行うだけではありません。実はWindows 10には、さまざまな方法でPCの電源を切ったり再起動したりできる「shutdown(シャットダウン)コマンド」が用意されています。これらのコマンドはコマンドプロンプトで実行するもので、それぞれ異なる役割を持っており、オプションを組み合わせることで柔軟な操作が可能です。 この記事では、Windows 10で使えるシャットダウン関連コマンドのすべてをわかりやすく解説します。 パート1.Windows 10におけるshutdownコマンドの基本構文 パート2.よく使われるシャットダウンコマンドの実例と使
-
Windowsで実行中のプロセス一覧を保存する方法【コマンドプロンプト・PowerShell対応】
Windowsのタスクマネージャーを開けば、PC上で現在動作しているすべてのタスクを確認できます。しかし、タスクマネージャーには、実行中のプロセス一覧をファイルとして保存する機能がありません。トラブルシューティングの資料として残したい場合や、後から比較・確認したい場合には不便です。幸い、コマンドプロンプトやPowerShellを使えば、誰でも簡単にプロセス一覧をテキストファイルとして書き出せます。 PCのプロセス一覧をエクスポートする最大の目的は、トラブルシューティングです。タスクマネージャーではリアルタイムでの監視しかできませんが、サポート担当者や第三者に状況を伝える際には、プロセスの一覧を