이 문서에서는 2025년 11월 7일 이전에 만든 컴퓨팅 인스턴스에서 보안 부트의 업데이트된 인증서를 신뢰하도록 허용된 서명 데이터베이스(db) 및 키 교환 키 (KEK) 변수를 업데이트하는 방법을 설명합니다.
KEK 및 db 업데이트는 영향을 받는 컴퓨팅 인스턴스를 다시 만들지 않는 고객을 위한 대안입니다.
재부팅 요구사항에 대한 참고사항: Windows와 달리 Linux에서는 KEK 및 db 서명 업데이트가 UEFI 변수에 기록되도록 시스템을 재부팅할 필요가 없습니다. Linux는 명령어가 실행되면 즉시 NVRAM 또는 펌웨어 스토리지에 업데이트를 씁니다.
시작하기 전에
보안 부트 KEK 및 db 인증서를 업데이트하기 전에 인스턴스에 업데이트가 필요한지 확인하고 잠재적인 부팅 또는 복호화 문제를 방지하기 위해 다음 준비를 완료하세요.
- 기본 요건 확인: 인스턴스에 보안 부트 인증서 업데이트가 필요한지 확인합니다.
- 데이터 무결성 및 키 복구: 디스크 암호화 (BitLocker 또는 LUKS FDE) 복구 키를 찾고 중요한 데이터를 백업합니다. 구성이 잘못된 경우 보안 변수를 변경하면 디스크에 대한 액세스가 잠길 수 있습니다.
- Linux 업데이트 순서 지정 권장사항: Linux 인스턴스의 경우 새 shim으로 업데이트하기 전에
dbUEFI 변수를 Microsoft UEFI CA 2023으로 업데이트하는 것이 좋습니다. 이 순서 지정은 데이터베이스에 2011 인증서만 포함되어 있는 동안 Microsoft UEFI CA 2023으로만 서명된 shim 업데이트가 적용되는 경우 잠재적인 CA 불일치 시나리오를 방지하는 데 도움이 됩니다. - 커스텀 PK 또는 KEK 구성: 인스턴스에서 커스텀 보안 부트 변수 (예: 커스텀
PK또는KEK)를 사용하는 경우 이 가이드에 제공된 표준 업데이트 파일(DBUpdate3P2023.bin또는kek2023update.bin)이 직접 적용되지 않습니다. UEFI 펌웨어에는 시스템에 있는KEK또는PK의 비공개 키로 서명된 업데이트 파일이 필요합니다. 커스텀 키를 사용하는 경우 자체 비공개 키로 업데이트 바이너리에 서명하거나 커스텀 인증 기관을 통해 업데이트를 관리해야 합니다.
fwupd를 사용하여 Linux에서 db 및 KEK 업데이트
fwupdmgr 버전 2.0.10 이상에서 이 메서드를 지원합니다. sudo fwupdmgr --version을 실행하여 버전을 확인합니다.
RHEL 8/9 및 SLES 15에 대한 참고사항: RHEL 8/9 및 SUSE Linux Enterprise Server (SLES) 15의 엔터프라이즈 저장소는 필요한 버전 기준점을 충족하지 않는 이전 버전의 fwupdmgr (RHEL 8 기능 버전 1.7.8, RHEL 9 기능 버전 1.9.13, SLES 15 SP6 기능 1.9.10)을 제공합니다. RHEL 8/9 또는 SLES 15를 실행하는 경우 소스에서 fwupd를 빌드하거나 나중에 설명된 sbsigntool/sbsigntools 또는 efitools 메서드를 사용해야 합니다.
SLES 12/15에 대한 참고사항: SLES 12/15의 엔터프라이즈 저장소는 fwupd를 제공하지 않으며 SLES 15의 SUSE Package Hub 저장소는 필요한 버전 기준점을 충족하지 않는 이전 버전의 fwupdmgr을 제공합니다. SLES 12를 실행하는 경우 소스에서 fwupd를 빌드해야 합니다. SLES 15를 실행하는 경우 소스에서 fwupd를 빌드하거나 나중에 설명된 efitools 또는 sbsigntools 메서드를 SUSE Package Hub에서 제공되는 백포트를 사용하여 사용해야 합니다.
다음을 실행합니다.
sudo fwupdmgr refresh
sudo fwupdmgr update 5bc922b7bd1adb5b6f99592611404036bd9f42d0
sudo fwupdmgr update b7a1d3d90faa1f6275d9a98da4fb3be7118e61c7
efitools를 사용하여 Linux에서 db 및 KEK 업데이트
다음 단계에서는 efitools 패키지를 사용하여 db 및 KEK 변수를 업데이트하는 방법을 안내합니다.
db 업데이트
Microsoft 저장소에서 업데이트 바이너리를 다운로드합니다.
wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.bin변수를 변경 가능하게 만듭니다. 즉, 쓰기 보호 플래그를 삭제합니다.
sudo chattr -i /sys/firmware/efi/efivars/db-*efi-updatevar를 실행하여 변수를 업데이트합니다.sudo efi-updatevar -a -f DBUpdate3P2023.bin db쓰기 보호 플래그를 복원하여 변수를 보호합니다.
sudo chattr +i /sys/firmware/efi/efivars/db-*
KEK 업데이트
인증서 업데이트가 포함된
.cab보관 파일을 다운로드합니다.wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabgcab이 설치되어 있지 않으면 설치합니다. 예를 들어 다음 중 하나를 실행합니다.Debian 또는 Ubuntu:
sudo apt update sudo apt install gcabSUSE Linux Enterprise Server (SLES) 또는 openSUSE (SUSE Package Hub 필요):
sudo SUSEConnect -p PackageHub/15.5/x86_64 sudo zypper install gcab(참고: SLES 버전이 다른 경우
15.5를 SLES 버전으로 바꿉니다).
gcab을 사용하여 보관 파일을 압축 해제합니다.gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab파일에 예상된 MD5 해시(
6a1c58e1b8391c0e3f2e97f83917807a)가 있는지 확인합니다.md5sum kek2023update.binKEK변수를 변경 가능하게 만듭니다.sudo chattr -i /sys/firmware/efi/efivars/KEK-*업데이트를 적용합니다.
sudo efi-updatevar -a -f kek2023update.bin KEK쓰기 보호 플래그를 복원하여 변수를 보호합니다.
sudo chattr +i /sys/firmware/efi/efivars/KEK-*
sbsigntool 또는 sbsigntools를 사용하여 Linux에서 db 및 KEK 업데이트
다음 단계에서는 db 및 KEK 변수를 sbkeysync 유틸리티를 사용하여 sbsigntool 또는 sbsigntools 패키지에서 업데이트하는 방법을 안내합니다.
패키지 이름 및 가용성에 대한 참고사항:
- Debian 및 Ubuntu 는 유틸리티 패키지 이름을
sbsigntool(끝에 's' 없음)로 지정합니다. 설치하려면sudo apt install sbsigntool을 실행합니다. - Red Hat Enterprise Linux (RHEL), CentOS, Fedora 기반 배포 는 유틸리티 패키지 이름을
sbsigntools(끝에 's' 있음)로 지정합니다. EPEL (Extra Packages for Enterprise Linux) 저장소는 이 패키지를 제공합니다. RHEL에 설치하려면 EPEL 저장소 (sudo dnf install epel-release)를 사용 설정한 후sudo dnf install sbsigntools를 실행합니다. - SUSE Linux Enterprise Server (SLES) 및 openSUSE 도 유틸리티 패키지 이름을
sbsigntools로 지정합니다. SUSE Package Hub 저장소는 이 패키지를 제공합니다. 설치하려면 SUSE Package Hub를 사용 설정한 후 (예:sudo SUSEConnect -p PackageHub/15.5/x86_64,15.5를 SLES 버전으로 바꿈)sudo zypper install sbsigntools를 실행합니다.
db 업데이트
Microsoft 저장소에서 업데이트 바이너리를 다운로드합니다.
wget https://github.com/microsoft/secureboot_objects/raw/refs/heads/main/PostSignedObjects/Optional/DB/amd64/DBUpdate3P2023.binsbkeysync의 적절한 폴더 내에 파일을 배치하고db를 변경 가능하게 만든 후 동기화를 실행합니다.sudo mkdir -p /etc/secureboot/keys/db sudo cp DBUpdate3P2023.bin /etc/secureboot/keys/db/ sudo chattr -i /sys/firmware/efi/efivars/db-* sudo sbkeysync --verbose쓰기 보호 플래그를 복원하여 변수를 보호합니다.
sudo chattr +i /sys/firmware/efi/efivars/db-*
KEK 업데이트
KEK 변수를 업데이트하려면 Microsoft KEK 업데이트 캐비닛 보관 파일을 다운로드하고 업데이트 바이너리를 압축 해제한 후 sbkeysync 유틸리티를 사용하여 동기화합니다. 다음 섹션에서는 배포에 따라 바이너리를 압축 해제하는 방법을 설명합니다.
KEK 인증서 업데이트가 포함된
.cab보관 파일을 다운로드합니다.wget https://fwupd.org/downloads/1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab.cab보관 파일을 압축 해제하여 KEK 업데이트 바이너리 (kek2023update.bin)를 가져옵니다.gcab유틸리티를 사용하는 Debian/Ubuntu:sudo apt update && sudo apt install gcab -y gcab --extract 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabEPEL의
cabextract유틸리티를 사용하는 RHEL/CentOS 기반 배포 (예: RHEL 8/9):sudo dnf install epel-release -y sudo dnf install cabextract -y cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cabSUSE Package Hub의
cabextract유틸리티를 사용하는 SUSE Linux Enterprise Server (SLES) 및 openSUSE:sudo SUSEConnect -p PackageHub/15.5/x86_64 sudo zypper install cabextract -y cabextract -f 1953fae13600a35944e93cd244476a6f6ce5fdbf620709b2f6f378fac2ae3bef-KEK-google_compute_engine.cab(참고: SLES 버전이 다른 경우
15.5를 SLES 버전으로 바꿉니다).
압축 해제된
kek2023update.bin파일에 예상된 MD5 해시(6a1c58e1b8391c0e3f2e97f83917807a)가 있는지 확인합니다.md5sum kek2023update.binsbkeysync의 적절한 폴더 내에 바이너리를 배치하고KEK변수를 변경 가능하게 만든 후 동기화를 실행합니다.sudo mkdir -p /etc/secureboot/keys/KEK sudo cp kek2023update.bin /etc/secureboot/keys/KEK/ sudo chattr -i /sys/firmware/efi/efivars/KEK-* sudo sbkeysync --verbose쓰기 보호 플래그를 복원하여 변수를 보호합니다.
sudo chattr +i /sys/firmware/efi/efivars/KEK-*
Windows에서 db 및 KEK 업데이트
이 인스턴스에서 보안 부트를 사용하지 않거나 사용할 계획이 없는 경우 이러한 인증서 업데이트를 적용할 필요가 없습니다. 보안 부트가 사용 설정되어 있지 않으면 업데이트가 불필요하므로 Windows 운영체제는 일반적으로 이러한 보안 부트 인증서 업데이트를 적용하려는 시도를 무시합니다.
나중에 보안 부트를 사용하려면 먼저 인스턴스에서 보안 부트를 사용 설정하여 보안 부트 인증서를 업데이트해야 합니다.
Windows 인스턴스에서 레지스트리 설정 및 예약된 작업은 호환되는 버전의 업데이트를 트리거합니다.
- Windows 인스턴스에 최근 월별 업데이트가 적용되어 있는지 확인합니다.
PowerShell에서 관리자 권한으로 다음을 실행합니다.
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name "AvailableUpdates" -Value 0x5944 Start-ScheduledTask -TaskName "\Microsoft\Windows\PI\Secure-Boot-Update"인스턴스를 재부팅하여 펌웨어 변수에 대한 작업을 허용합니다. 가상화 보안 기능이 활성 상태인 경우 일부 환경에서는 두 번 다시 시작해야 합니다.