2026年11月3日火曜日

古い PC で Secure Boot 問題を熟す

新しい PC なら 維持は 簡単 なのですが、
古い PC を使い続けるのって 関門 が幾つも立ち塞がります。
Secure  Boot 問題にしても、然り!。
でも、世の中には素晴らしい方々がいて指針を指し示して下さいます。  感謝。


Windsows 11 になって、ハードに要求される要件が厳しくなりましたね。
当初、どうしようかなぁ、と頭を抱えていた訳ですが、
何とか山を越え ... 。
そして、また、次の山が立ち塞がっていました。
Secure Boot !。

通常は、意識していなくても当の昔に自動更新されているので、
何其れ? の方が多いのかも知れません。

必須ファイルの署名期限が近付くので、新しいものに交換!と言われたのが約1年半前。
今年の5月頃から盛んに目にする様になりましたが、
古い機種では、 対応に取り組んでいます (未更新)のまま、此の秋を迎えて仕舞った訳です。
一向に更新される気配は ... 無い。  :O
起動出来無く訳では無く、通常利用には差支え無いのでしようが、
事は セキュリティ絡み です。
  昨今、巷を騒がせている セキュリティ ですから。
直せるものなら 直したい と。

以前から検索しては来たのですが、一般的な検索結果では 効果無し!。  X(
証明書の署名期限が 6月から10月 と言われていたので、
本腰を入れて 検索し捲り!。  何とか10月のうちに ... 。

結果、無事に 2023 証明書に移行しました!。
安堵。

  未確認ですが、TPM や Secure Boot 要件が 将来の OS 更新条件 になるかも。



さて、長く且つかなり専門的になりますが、書き残して置きます。
こりゃ駄目だと思ったら、現状で我慢するか、新しいのの導入をご検討下さい。

先ずは、作業前。  目にする機会のある場所の警告マークは心が折れますね。


該当機種は HP EliteBook 840 G3 。  Business Note PC の範疇。
最初から OS は Pro 搭載。  現在は Windows 11 Pro Version 25H2


以下のページを参考に対応しましたが、
例示のものとは 数箇所 差異があり、
判断には困りましたが、何とか凌ぎました。

因みに、此の ページ は Maker である HP の HP Community なので、
検証文字列が Maker 固有になっている箇所があります。
他 Maker の場合、読み替える必要があると考えます。


https://h30434.www3.hp.com/t5/Business-Notebooks/Enabling-new-UEFI-2023-CA-certificates-in-pre-2018-HP/td-p/9628370/page/5
Posted by akluch  07-19-2026 11:11 PM - edited ‎08-03-2026 01:54 PM

akluch さまに感謝!。


以下、実行時の Std-Output 。
管理者での Power Shell で、です。
各 Step は 参考にしたサイトのものに準じます。
ステップ番号の後の Device Dependent は機種依存すると思われる箇所。
コマンドをコピーペーストする際には、冒頭の Prompt "PS C:¥WINDOWS¥system32> " にご留意を!。


------
Step 0
------

  Create C:¥Temp Directry
  Copy %WINDIR%¥System32¥SecureBootUpdates To C:¥Temp

------
Step 1
------

PS C:¥WINDOWS¥system32> Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

Name                           Version          Source           Summary
----                           -------          ------           -------
nuget                          2.8.5.208        https://cdn.o... NuGet provider for the OneGet meta-package manager


PS C:¥WINDOWS¥system32> Install-Script -Name SplitDbxContent -Force

  "C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1"
‎  Creation 2026‎年‎10‎月‎29‎日、‏‎14:40:57
  Modified ‎2020‎年‎7‎月‎28‎日、‏‎7:53:54

------
Step 2   Device Dependent
------

PS C:¥WINDOWS¥system32> Get-SecureBootUEFI -Name PK -Decoded

SignatureOwner : f5a96b31-dba0-4faa-a42a-7a0c9832768e
Subject        : CN=HP UEFI Secure Boot 2013 PK Key, OU=Long Lived CodeSigning Certificate, O=Hewlett-Packard Company
Version        : 3
Algorithm      : sha256RSA
SerialNumber   : 7758A5F8CB1DCFD32C6A7F8F03816B04
ValidFrom      : 2013-08-23 09:00:00Z
ValidTo        : 2033-08-24 08:59:59Z


PS C:¥WINDOWS¥system32>

  SerialNumber = 7758A5F8CB1DCFD32C6A7F8F03816B04

    https://github.com/microsoft/secureboot_objects/blob/main/PostSignedObjects/KEK/kek_update_map.json
  Get/Download .json To PC
  Open by Using notepad.exe
  Seek/Search SerialNumber String

    "ef40e88b7f2cc718a087051db5d5d4c26043c5aa": {
        "KEKUpdate": "HP/KEKUpdate_HP_PK5.bin",
        "Certificate": {
            "serial_number": "7758a5f8cb1dcfd32c6a7f8f03816b04",
            "issued_to": "CN=HP UEFI Secure Boot 2013 PK Key,OU=Long Lived CodeSigning Certificate,O=Hewlett-Packard Company",
            "issued_by": "CN=Hewlett-Packard Printing Device Infrastructure CA,O=Hewlett-Packard Company,C=US"
        }
    },

  KEKUpdate = HP/KEKUpdate_HP_PK5.bin
  Find This File (KEKU....bin) On Left KEK Tree (HP) At github Page
  Download That
  Copy/Move to C:¥Temp

------
Step 3   Device Dependent
------

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' C:¥temp¥KEKUpdate_HP_PK5.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32>
PS C:¥WINDOWS¥system32> Set-SecureBootUefi -AppendWrite -Name KEK -ContentFilePath C:¥temp¥content.bin -SignedFilePath C:¥temp¥signature.p7 -Time 2010-03-06T19:17:21Z
>>
Name Bytes             Attributes
---- -----             ----------
KEK  {218, 7, 3, 6...} NON VOLATILE...

------
Step 4
------

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' C:¥temp¥DBUpdate3P2023.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32>
PS C:¥WINDOWS¥system32> Set-SecureBootUefi -AppendWrite -Name db -ContentFilePath C:¥temp¥content.bin -SignedFilePath C:¥temp¥signature.p7 -Time 2010-03-06T19:17:21Z

Name Bytes             Attributes
---- -----             ----------
db   {218, 7, 3, 6...} NON VOLATILE...

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' $env:windir¥System32¥SecureBootUpdates¥DBUpdate2024.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32> Set-SecureBootUefi -AppendWrite -Name db -ContentFilePath C:¥temp¥content.bin -SignedFilePath C:¥temp¥signature.p7 -Time 2010-03-06T19:17:21Z

Name Bytes             Attributes
---- -----             ----------
db   {218, 7, 3, 6...} NON VOLATILE...

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥Temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' $env:windir¥System32¥SecureBootUpdates¥DBUpdateOROM2023.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32> Set-SecureBootUEFI -AppendWrite -Name db -ContentFilePath C:¥Temp¥content.bin -SignedFilePath C:¥Temp¥signature.p7 -Time 2010-03-06T19:17:21Z

Name Bytes             Attributes
---- -----             ----------
db   {218, 7, 3, 6...} NON VOLATILE...

------
Step 5
------

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥Temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' C:¥Temp¥dbxupdate.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32>
PS C:¥WINDOWS¥system32> Set-SecureBootUEFI -AppendWrite -Name dbx -ContentFilePath "C:¥Temp¥content.bin" -SignedFilePath "C:¥Temp¥signature.p7" -Time "2010-03-06T19:17:21Z"

Name Bytes             Attributes
---- -----             ----------
dbx  {218, 7, 3, 6...} NON VOLATILE...

PS C:¥WINDOWS¥system32> PowerShell.exe -ExecutionPolicy Bypass -Command "cd C:¥Temp; & 'C:¥Program Files¥WindowsPowerShell¥Scripts¥SplitDbxContent.ps1' $env:windir¥System32¥SecureBootUpdates¥DBXUpdateSVN.bin"
Successfully created output file .¥signature.p7
Successfully created output file .¥content.bin
PS C:¥WINDOWS¥system32> Set-SecureBootUEFI -AppendWrite -Name dbx -ContentFilePath C:¥Temp¥content.bin -SignedFilePath C:¥Temp¥signature.p7 -Time 2010-03-06T19:17:21Z

Name Bytes             Attributes
---- -----             ----------
dbx  {218, 7, 3, 6...} NON VOLATILE...

------
Step 6
------

PS C:¥WINDOWS¥system32> ([System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'Windows UEFI CA 2023')
True
PS C:¥WINDOWS¥system32> ([System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI kek).bytes) -match 'Microsoft Corporation KEK 2K CA 2023')
True
PS C:¥WINDOWS¥system32> ([System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI pk).bytes) -match 'Microsoft RSA Third Party PCA 2023')
False
PS C:¥WINDOWS¥system32> ([System.Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI pk).bytes) -match 'Hewlett-Packard')
True
PS C:¥WINDOWS¥system32>

  True True False True : Not All True, This Case No Problem ... ?
  Something I did wrong ?

------
Step 7
------

[System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromSignedFile("$env:windir¥Boot¥EFI_EX¥bootmgfw_EX.efi").Issuer

PS C:¥WINDOWS¥system32> [System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromSignedFile("$env:windir¥Boot¥EFI_EX¥bootmgfw_EX.efi").Issuer
CN=Windows UEFI CA 2023, O=Microsoft Corporation, C=US
PS C:¥WINDOWS¥system32>

  OK!

------
Step 8
------

PS C:¥WINDOWS¥system32> mountvol S: /S
PS C:¥WINDOWS¥system32> reg save HKLM¥BCD00000000 S:¥EFI¥Microsoft¥Boot¥BCD.bak
この操作を正しく終了しました。
PS C:¥WINDOWS¥system32> Copy-Item "S:¥EFI¥Microsoft¥Boot¥bootmgfw.efi" "S:¥EFI¥Microsoft¥Boot¥bootmgfw.efi.bak" -Force
PS C:¥WINDOWS¥system32> Copy-Item "$env:windir¥Boot¥EFI_EX¥bootmgfw_EX.efi" "S:¥EFI¥Microsoft¥Boot¥bootmgfw.efi" -Force
PS C:¥WINDOWS¥system32> Copy-Item "S:¥EFI¥Boot¥BOOTX64.efi" "S:¥EFI¥Boot¥BOOTX64.efi.bak" -Force
PS C:¥WINDOWS¥system32> Copy-Item "$env:windir¥Boot¥EFI_EX¥bootmgfw_EX.efi" "S:¥EFI¥Boot¥BOOTX64.efi" -Force
PS C:¥WINDOWS¥system32> mountvol S: /D

------
Step 9
------

Reboot PC (First Time)

-------
Step 10
-------

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:¥WINDOWS¥system32> Set-ItemProperty -Path "HKLM:¥SYSTEM¥CurrentControlSet¥Control¥SecureBoot" -Name "AvailableUpdates" -Value 16384 -Type DWord
PS C:¥WINDOWS¥system32> Set-ItemProperty -Path "HKLM:¥SYSTEM¥CurrentControlSet¥Control¥SecureBoot¥Servicing" -Name "UEFICA2023Status" -Value "Updated" -Type String
>>
PS C:¥WINDOWS¥system32> Remove-ItemProperty -Path "HKLM:¥SYSTEM¥CurrentControlSet¥Control¥SecureBoot¥Servicing" -Name "UEFICA2023Error" -ErrorAction SilentlyContinue
>>
PS C:¥WINDOWS¥system32> Remove-ItemProperty -Path "HKLM:¥SYSTEM¥CurrentControlSet¥Control¥SecureBoot¥Servicing" -Name "UEFICA2023ErrorEvent" -ErrorAction SilentlyContinue
>>
PS C:¥WINDOWS¥system32> Stop-ScheduledTask -TaskName "¥Microsoft¥Windows¥PI¥Secure-Boot-Update" -ErrorAction SilentlyContinue
>>
PS C:¥WINDOWS¥system32> Disable-ScheduledTask -TaskName "¥Microsoft¥Windows¥PI¥Secure-Boot-Update" -ErrorAction SilentlyContinue

TaskPath                                       TaskName                          State
--------                                       --------                          -----
¥Microsoft¥Windows¥PI¥                         Secure-Boot-Update                Disabled


PS C:¥WINDOWS¥system32> Enable-ScheduledTask -TaskName "¥Microsoft¥Windows¥PI¥Secure-Boot-Update" -ErrorAction SilentlyContinue

TaskPath                                       TaskName                          State
--------                                       --------                          -----
¥Microsoft¥Windows¥PI¥                         Secure-Boot-Update                Ready

PS C:¥WINDOWS¥system32>

-------
Step 11
-------

Reboot PC  (Second Time)




Install-Script 実行には 以下が必要でした。
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

また、
Install-Script で取得した保存場所が例示と異なっています。
C:¥Program Files¥WindowsPowerShell¥Scripts¥
環境依存なのでしょうか。  管理者で取得した場合に規定では上記になる様です。
上の説明は此れになっています。



最後のステップ迄進んで、Windows Security に 緑色の✔ が付か無いケースが有ります。
原因は セキュアブートは✔でも コア分離が OFF になっていたから でした。
此れを操作 (ON) し再起動する事で 全体が 緑色の✔ に変わります。



0 件のコメント:

コメントを投稿