Guia para criação de uma assinatura personalizada para Secure Boot tornando possível configurar a BIOS dos dispositivo para inicializar apenas com o sistema operacional específico
OpenSSL | Para gerar chaves. |
---|---|
efitools | Para manipular chaves UEFI. |
sbsigntools | Para assinar arquivos EFI. |
mkdir -p secureboot-keys && cd secureboot-keys
# Gerar PK (Platform Key) openssl req -newkey rsa:4096 -nodes -keyout PK.key -new -x509 -sha256 -days 3650 -subj "/CN=My Platform Key/" -out PK.crt # Gerar KEK (Key Exchange Key) openssl req -newkey rsa:4096 -nodes -keyout KEK.key -new -x509 -sha256 -days 3650 -subj "/CN=My Key Exchange Key/" -out KEK.crt # Gerar db (Database Key) openssl req -newkey rsa:4096 -nodes -keyout db.key -new -x509 -sha256 -days 3650 -subj "/CN=My Signature Database Key/" -out db.crt # Gerar dbx (Opcional) openssl req -newkey rsa:4096 -nodes -keyout dbx.key -new -x509 -sha256 -days 3650 -subj "/CN=My Revoked Signatures Key/" -out dbx.crt
As chaves devem ser convertidas para o formato EFI Signature List (ESL).
No Linux como root
apt-get install efitools
Substitua <UUID> por um UUID gerado (ex: $(uuidgen) no Linux).
# Converter PK cert-to-efi-sig-list -g <UUID> PK.crt PK.esl sign-efi-sig-list -k PK.key -c PK.crt PK PK.esl PK.auth # Converter KEK cert-to-efi-sig-list -g <UUID> KEK.crt KEK.esl sign-efi-sig-list -k PK.key -c PK.crt KEK KEK.esl KEK.auth # Converter db cert-to-efi-sig-list -g <UUID> db.crt db.esl sign-efi-sig-list -k KEK.key -c KEK.crt db db.esl db.auth
O bootloader do Windows (bootmgfw.efi) deve ser assinado com sua chave db.
O arquivo está em:
/EFI/Microsoft/Boot/bootmgfw.efi (partição EFI do Windows).
sudo sbsign --key db.key --cert db.crt --output bootmgfw-signed.efi bootmgfw.efi
Faça backup do original e substitua pelo arquivo assinado.
Acesse a BIOS/UEFI (geralmente pressionando Del, F2, ou F12 durante a inicialização).
PK: | Carregue PK.auth. |
---|---|
KEK: | Carregue KEK.auth. |
db: | Carregue db.auth. |
Salve e saia.
Na BIOS:
Verificação: Inicialize o Windows 11. Se tudo estiver correto, o sistema iniciará.
Use o comando no PowerShell para confirmar:
Confirm-SecureBootUEFI
Deve retornar True.