[TUTORIAL] Assinando kernel nas distros baseadas no debian e ubuntu

Nessa dica mostro como assinar um kernel diferente do da sua distro. Uso no Debian e Ubuntu. Não testei nas demais. Eu usava muito o systemd-boot-efi mas nas últimas versões do Debian e Ubuntu os arquivos mudaram e está muito complicado utilizar este recurso na mão. Os passos abaixo ficam por sua conta e risco.

  1. no debian, instale o pacote:

$ sudo apt install sbsigntool

  1. instale o kernel de sua preferência (não sera visto aqui)

  2. vá em /boot como root:

$ sudo su
# cd /boot

  1. liste os kernels (ou kerneis)

# ls vmlinuz-*
vmlinuz-original
vminuz-novo

  1. gerando a chave para assinatura:

# openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj “/CN=NOME_KERNEL/”

# openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem

  1. importando a chave. Será pedida senha para uso no boot. Use teclas comum do teclado americano. Caracteres especiais serão ignorados no boot e a assinatura falhará:

# mokutil --import MOK.der
senha:
repita senha:

  1. assine o kernel novo:

# sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-novo --output /boot/vmlinuz-novo.signed

  1. substitua o vmlinuz não assinado pelo assinado:

# mv /boot/vmlinuz-novo.signed /boot/vmlinuz-novo

# update-grub

  1. mantenha as chaves MOK* onde foram garadas: /boot

  2. reincie seu computador e vamos para a assinatura do kernel. Cada computador terá um método diferente. Abaixo mostro o meu apenas como guia.

  3. No boot, entre com a senha criada em “6)”:

  1. Entre no “Enroll MOK”:



  1. Redigite a senha criada em “6)”:

  1. Reinicie:

  1. Entre no kernel assinado:

  1. Pronto:

7 curtidas