Как собрать подписанный grubx64.efi для grub2?

gawk решение:

for f in /directory/*; do gawk -i inplace '{getline nl; print nl$0}' "$f"; done

для f в /directory/* - для каждого файла по указанному пути

gawk -i inplace - включить in place редактирование файла

getline nl - прочитать следующую запись из ввода awk в переменную nl (следующая строка)

print nl$0 - вывести текущую и следующая запись поменялась местами

1
22.09.2016, 23:35
1 ответ

Открытый ключ, встраиваемый с помощью опции -mпараметра grub-mkimage, предназначен для подписи любых файлов, которые GRUB будет читать. При этом используются отдельные файлы подписи в стиле GPG -(*.sig). Но это не имеет ничего общего с безопасной загрузкой как таковой.

Для подписи безопасной загрузки требуется подпись другого типа. Подпись, совместимая с Secure Boot -, встроена в сам двоичный файл PE32+. Есть как минимум три инструмента, которые могут сделать такую ​​подпись:

Вам потребуется настроить прокладку для использования MOK (Ключ владельца машины ). Вы можете сделать это, используя mokutil,или дистрибутивы, связанные с Debian/Ubuntu -, могут предлагать более удобный для начинающих -update-secureboot-policyскрипт для выполнения этой работы. Если вы используете его, вы найдете сертификат MOK (в формате DER )и соответствующий закрытый ключ в /var/lib/shim-signed/mok.

Для инструментов подписи sbsignи osslsigncodeпотребуется сертификат MOK в формате PEM. Закрытый ключ уже будет в формате PEM. Преобразование сертификата просто:

sudo openssl x509 -inform DER -in /var/lib/shim-signed/mok/MOK.der -outform PEM -out ~/MOK_certificate.pem

Инструменту pesignпотребуется MOK, хранящийся в базе данных сертификатов в стиле NSS -. Вы можете использовать openssl pkcs12 -export, чтобы сначала преобразовать сертификат и закрытый ключ в один файл PKCS #12, а затем pk12utilимпортировать этот файл в новый каталог базы данных сертификатов NSS (каталог с тремя файлами в нем. :cert8.db, key3.dbи secmod.db).

Затем вы должны использовать один из упомянутых выше -инструментов для подписи grubx64.efiсертификата MOK и соответствующего закрытого ключа :

.
sbsign --key <MOK private key file.pem> --cert <MOK certificate.pem> --output grubx64.efi.signed grubx64.efi
# or
pesign --in=grubx64.efi --out=grubx64.efi.signed -c <name of certificate in NSS certificate store> -n <NSS certificate store directory> -s
# or
osslsigncode -certs <MOK certificate.pem> -key <MOK private key file.pem> -h sha256 -in grubx64.efi -out grubx64.efi.signed
1
09.12.2020, 14:18

Теги

Похожие вопросы