¿Cómo firmar kernel para usar virtualbox en una maquina con UEFI?

Para compartir tips, plantear dudas, sugerir software y todo lo relacionado con la parte técnica del software libre.
Responder
camilo
Mensajes: 33
Registrado: Jue Mar 07, 2019 1:14 am

¿Cómo firmar kernel para usar virtualbox en una maquina con UEFI?

Mensaje por camilo » Mié Jul 24, 2019 1:14 am

Mike preguntó en el grupo de telegram:
¿Puedo hacer una pregunta sobre cómo firmar un kernel para poder usar VirtualBox en una máquna con uefi sin desactivar secure boot? Recuerdo que lo hice en mayo del año pasado, pero ahora actualicé el kernel y no recuerdo cómo se hace. He visto algunos blogs, pero no me resulta porque no encuentro el archivo MOK.der
Buscando por "sign linux kernel for efi mok.der" encontré esto:
https://slimbook.es/tutoriales/linux/36 ... ed-rc-1908

Al parecer mok.der debe instalarse con el paquete mokutil. Dejo el hilo para documentar al respecto.
Almirantux
Mensajes: 14
Registrado: Mié Mar 06, 2019 2:26 pm

Re: ¿Cómo firmar kernel para usar virtualbox en una maquina con UEFI?

Mensaje por Almirantux » Mié Jul 24, 2019 2:12 am

se hace pasito a pasito....

paso 1: mkdir /root/module-signing
paso 2: cd /root/module-signing
paso 3: openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=TU_NOMBRE/"
paso 4: chmod 600 MOK.priv
en el paso 3 lo creaste :-P
Usa la utilería MOK (“Machine Owner Key”) para importar la llave pública y que pueda el sistema tener confianza en esta llave. Este proceso tiene dos pasos, el primero donde la llave es importada y el segundo donde la llave debe ser cargada al momento de que la máquina inicie. Se debe asigna un password simple ya que es para uso temporal.
paso 5: mokutil --import /root/module-signing/MOK.der
input password:
input password again:

paso 6:
Se debe reiniciar la máquina. Cuando el cargador de arranque inicia, el gestor MOK del gestor EFI debe arrancar de forma automática y deberás indicar que se desea cargar un llave, selecciona la key que has creado y te pedirá el password que has proporcionado en el paso 5. Luego selecciona “Enroll MOK”, y veras la llave que has importado en el paso 3. Completa los pasos del registro de la llave y continua con el arranque de la máquina. El Kernel Linux tendrá registro de la llave que haz cargado y podrás ver tu propia llave con el comando:
dmesg|grep 'UEFI:MokListRT cert'

paso 7:
Usando una la utilería que se incluye en los archivos de los builts del kernel, firma todos los módulos de VirtualBox usando la llave privada MOK que se generó en el paso 3. Debes crear un pequeño script en

/root/module-signing/sign-vbox-modules

y puedes ejecutarlo fácilmente cuando se instalen nuevos kernels como parte de las actualizaciones. Agrega este código al script:

#!/bin/bash

for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
echo "Signing $modfile"
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
/root/module-signing/MOK.priv \
/root/module-signing/MOK.der "$modfile"
done

paso 8:
Luego cambia los permisos para hacerlo ejecutable solo por el usuario root
chmod 700 /root/module-signing/sign-vbox-modules

paso 9:
Carga el módulo vboxdrv
modprobe vboxdrv


paso 10: arranca VirtualBox:
Quien soy tux? Gnu lo se... :mrgreen:
RHCE y CLP
nonglobal
Mensajes: 1
Registrado: Mié Dic 18, 2019 11:46 pm

Re: ¿Cómo firmar kernel para usar virtualbox en una maquina con UEFI?

Mensaje por nonglobal » Mié Dic 18, 2019 11:49 pm

No había podido dedicarme a este asunto.
Me resultó siguiendo este instructivo
https://superdanby.github.io/Blog/signi ... -boot.html
la variable MODULE_NAME se va reemplazando por los módulos a firmar, en mi caso:
vboxdrv
vboxnetflt
vboxnetadp
vboxpci

Mike
Responder