
Eu queria perguntar se era possível carregar uma chave em minha distribuição de persistência ao vivo para passar pelo Secure Boot sem desabilitar. Imagino que a resposta provavelmente seja não, mas tive vontade de perguntar de qualquer maneira.
Responder1
Você não disse para que deseja a chave, mas no Ubuntu eu faço isso periodicamente para assinar os drivers manualmente. Meu driver BroadCom WiFi é de terceiros e não assinado, e eu uso o seguinte script sempre que um novo kernel é instalado:-
#!/bin/bash
if [ "$(whoami)" != "root" ]
then echo "wlsign: must be called from 'root'"
elif [ -z "$1" -o "$1" == "-c" ]
then
[ "$1" == "-c" ] && \
openssl req -new -x509 -newkey rsa:2048 -keyout wl.priv -outform DER -out wl.der -nodes -days 36500 -subj "/CN=BroadCom/"
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./wl.priv ./wl.der $(modinfo -n wl)
[ "$1" == "-c" ] && mokutil --import wl.der
[ "$1" == "-c" ] && echo Now reboot and select MOK install || modprobe wl
else
[ "$1" != "-h" ] && echo "wlsign: invalid options - $@"
echo 'wlsign [-c|-h] : signs proprietary Wireless kernel drivers'
echo ' -c : create new keys (default: use existing)'
echo ' -h : give this help information'
fi
Eu precisei da -c
opção apenas uma vez para criar inicialmente os arquivos-chave. Após o uso, -c
o sistema precisa ser reinicializado e a nova chave aceita no firmware UEFI.
Tenho scripts semelhantes para outros drivers não assinados, especialmente os drivers VMware, que são compilados dinamicamente e, portanto, nunca podem ser assinados.
Como Kali e Ubuntu são derivados do Debian, espero que as estruturas de diretórios do sistema sejam semelhantes. Observe que o sign-file
programa está instalado nos cabeçalhos do kernel, portanto linux-headers-*
precisará ser instalado para o seu kernel. Existe um kmodsign
programa em /usr/bin/
, que pode ser uma alternativa, mas ainda não experimentei.
Não me lembro onde encontrei esta informação, por isso não posso identificar sua fonte.