あれこれ備忘録@はてなブログ

勉強したことやニュースや出来事を備忘録として書いていきます

このブログには広告が含まれます

古いパソコン(Windows10またはWindows11)のセキュアブート証明書を更新する。PowerShellスクリプトが実行できない場合の対処法もあり

Windows 11 とセキュア ブート - Microsoft サポート

セキュア ブートは、Windows PC の起動時に悪意のあるソフトウェアが読み込まれるのを防ぐのに役立つセキュリティ機能です。 これは、ブート プロセス中に信頼されたデジタル署名されたソフトウェアのみを実行できるようにすることで機能します。 最新の PC のほとんどはセキュア ブートをサポートしていますが、一部のファームウェア設定では、セキュア ブートが使用できないかのようにデバイスを表示できます。 これらの設定は、デバイス ファームウェアで変更できます。 ファームウェアは、一般に UEFI (および BIOS と呼ばれることもあります) と呼ばれ、PC の電源を入れるときに Windows より前に実行されるソフトウェアです。

Windowsが起動するときに、読み込まれるファイルが正しいものであるかどうかを検証して、問題ないかどうか調べてから起動する仕組みということだろう。

古いパソコンでは2026年6月でその証明書の期限が切れるとのこと。

通常はWindows10やWindows11のWindows Updateで証明書が更新されるので問題ない。

しかし、何らかの事情でWindows Updateができない場合がある。

うちのマシンの場合は、ある時点から、エラーが出てWindows Updateが完了しなくなった。

あるアップデートに失敗するので、それ以降のアップデートができないのである。

そんなことをしているうちにWindows10のサポート期間が終了して、Windows Updateができなくなった。

そこでネットにある方法を使って、Windows10からWindows11に無理やりアップグレードした。

しかし、ポリシー管理によってこれもWindows Updateなどが無効になっていて、証明書が更新されなかった。

そこで手動で証明書の更新をしてみることにした。

古いパソコン(マザーボード)のセキュアブート証明書を更新する - ネットショッピングのすすめ

ITニュース. 2026年6月にセキュアブート証明書の有効期限切れ、企業は対策が必要な場合も

上の記事を参考にした。

まず、UEFIとセキュアブートが有効になっているか確認しなくてはいけない。

通常はよほど古いマシンでない限りは UEFIでの起動になっているはずである。

Windows7時代のパソコンでWindows10にアップグレードした場合にはもしかするとUEFIでない可能性がある。

この場合はそもそもセキュアブートで起動していないのだろうから証明書の更新をする意味がないだろう。

また、最初からWindows10がインストールされていたマシンで普通の使い方をしているのであれば、セキュアブートは有効になっているはずである。

Linuxなどをインストールしてデュアルブートにしている場合などに、セキュアブートを無効にしていることがある。

その場合は、パソコンのメーカーによって異なるがパソコンの電源を入れたあとF2やDeleteキーを連打して、いわゆるBIOS(今はBIOSではないが)設定画面に入り、セキュアブートの項目を有効にする。

次にWindowsの診断データの送信が有効になっているか確認する必要がある。

私の持っているマシンはHOMEエディションなので、診断データの送信の可否は変更できないはずなので、これに加えて、レジストリを変更する。

HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥Securebootまで進み、右側のエリアで「新規」「DWORD値(32ビット)」を選択して、MicrosoftUpdateManagedOptInという名前にする。

そして、値を16進数で「5944」とする。

次に再度紹介する記事のたどり、3つのスクリプト(プログラム)をブラウザで開き保存する。

ITニュース. 2026年6月にセキュアブート証明書の有効期限切れ、企業は対策が必要な場合も

  • check-securebootdb.ps1
  • allowautoupdate-securebootdb.ps1
  • updatenow-securebootdb.ps1

記事中のスクリプトのソースコードをコピーしてテキストエディタに貼り付けて名前をつけて保存でも良いが、「プレーンテキスト」というリンクを開いて、「ページを保存」で名前をつけて保存した方が簡単だろう。

保存したらPowerShellを管理者権限で開く、Windows11の場合はスタートメニューのアイコンを左クリックして、上の検索欄にPowerShellと入れると結果が出てくるのでその表示された結果のうちの「管理者権限で実行」をクリックすればコマンドプロンプトのような黒い画面のウィンドウが開くはずである。

スクリプトの保存したディレクトリ(フォルダ)に移動する。

cdコマンドを使って移動する。

使い方がわからない場合には、PowerShellに書かれている初期ディレクトリにスクリプトファイルの方を移動するのが簡単かもしれない。

2026/03/01 追記

PowerShellの初期のカレントディレクトリは例えばWindows11だとC:\WINDOWS\system32なので、ここにスクリプトファイルを置くのはまずい。

やはり、ユーザーのディレクトリに置いて、cdコマンドで移動するのがいいだろう。

ただ、問題はエクスプローラーに表示されているディレクトリ名とPowerShellで指定できるディレクトリ名は異なっている。

例えば、あなたのアカウント名がuserでホームの下のダウンロードというディレクトリの中にスクリプトファイルを置いているとする。

するとエクスプローラーではC:\ユーザー\user\ダウンロードという名前になっているはずだ。

しかし、PowerShellで指定する場合、

cd C:\Users\user\Downloads

という風にする。

なお、\¥のことである。

バックスラッシュは日本語では円マークであらわされる。

追記終わり

できたら

.\check-securebootdb.ps1

を実行する。

SecureBoot: ON
SecureBoot DB is not updated.

と出たら、セキュアブートが有効になっていて、証明書が更新されていないということである。

次に

.\allowautoupdate-securebootdb.ps1

を実行して、マイクロソフトによる更新を許可する。

さらに

.\updatenow-securebootdb.ps1

を実行してしばらく待つ。

SecureBoot : ON
Updated SecureBoot DB! please reboot twice.

と表示されたら、パソコンを再起動する。

何かしらの画面が出るだろうから再起動できるまでじっと待つ。

再起動されたら、もう一度再起動する。

Windowsが再起動できたら、再度PowerShellを管理者権限で実行して

.\check-securebootdb.ps1

を実行する。

SecureBoot: ON
SecureBoot DB already been updated. Nothing to do any ore.

と表示されたら、証明書の更新は成功である。

注意!

無理やりにWindows11にアップグレードしている場合、Rufusという起動用イメージをUSBメモリに書き込むアプリの設定で、ポリシー管理の設定がなされており、上のスクリプトの実行が許可されない場合がある。

そのときには

powershell -ExecutionPolicy Bypass -File .\check-securebootdb.ps1

とすると実行できる。

以下、同様に

powershell -ExecutionPolicy Bypass -File .\allowautoupdate-securebootdb.ps1
powershell -ExecutionPolicy Bypass -File .\updatenow-securebootdb.ps1

として、実行する。

以上で、セキュアブート証明書の更新ができた。

UbuntuなどのLinuxディストリビューションもこの証明書を使ってセキュアブートで起動しているから更新が必要になるが、Windowsがないと更新手続きができないのが困る。

また10数年たったら、同じような更新の時期がくるのだろうが、そのときには別の方法での更新方法ができていることを望む。