grub2용으로 서명된 grubx64.efi를 빌드하는 방법은 무엇입니까?

grub2용으로 서명된 grubx64.efi를 빌드하는 방법은 무엇입니까?

grub-mkimageLinux-Mint에서 64비트 efi grub2 부팅 파일을 빌드할 수 있습니다. 하지만 시그니처 스페이서와 함께 사용할 수 있는 것을 만들고 싶습니다.

bootx64.efi - 서명된 shim(예: Ubuntu에서)

grubx64.efi - grub2(예: Ubuntu에서)

안전 부팅 모드에서는 정상적으로 부팅됩니다. 그러나 grubx64.efi해당 파일로 빌드한 파일을 교체하면 안전하지 않은 부팅 모드로만 부팅됩니다.

스크립트 grub-mkimage가 공개 키를 제공하는 것 같습니다. 이것이 내가 추가해야 할 것입니까? 그렇다면 키는 어디서 가져오고 어떻게 추가하나요?

답변1

-m내장형 공개 키 옵션을 사용하면 grub-mkimageGRUB이 읽을 모든 파일에 서명하는 데 사용됩니다. 이는 GPG 스타일 분리 서명 파일( *.sig)을 사용합니다. 하지만 보안 부팅 자체와는 아무런 관련이 없습니다.

보안 부팅 서명에는 다양한 유형의 서명이 필요합니다. 보안 부팅 호환성 서명은 PE32+ 바이너리 자체에 내장되어 있습니다. 이러한 서명을 수행할 수 있는 도구는 최소한 세 가지가 있습니다.

MOK(머신 소유자 키)를 사용하려면 shim을 구성해야 합니다. 를 사용하여 이 작업을 수행할 수 있습니다 mokutil. 또는 Debian/Ubuntu 관련 배포판에서 update-secureboot-policy작업을 수행하는 데 있어 초보자에게 더 친숙한 스크립트를 제공할 수도 있습니다. 이를 사용하면 MOK 인증서(DER 형식)와 해당 개인 키를 찾을 수 있습니다 /var/lib/shim-signed/mok.

서명 도구에는 PEM 형식의 MOK 인증서가 필요 sbsign합니다 . osslsigncode개인 키는 이미 PEM 형식입니다. 인증서 변환은 간단합니다.

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

pesign도구에는 NSS 스타일 인증서 데이터베이스에 저장된 MOK가 필요합니다. openssl pkcs12 -export먼저 인증서와 개인 키를 단일 PKCS#12 파일로 변환한 다음 해당 파일을 새 NSS 인증서 데이터베이스 디렉터리( , 및 pk12util3개 파일 포함)로 가져올 수 있습니다 .cert8.dbkey3.dbsecmod.db

그런 다음 위 도구 중 하나를 사용하여 grubx64.efiMOK 인증서 및 해당 개인 키로 서명할 수 있습니다.

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

답변2

shim에 포함된 키에 액세스해야 합니다. 이는 빌드 서비스에 대한 액세스를 의미할 가능성이 높습니다(일부 권한이 있을 수 있음). grub 패키지 관리자에게 문의하세요. 나는 몇 가지 세부 사항을 발견했습니다.여기그땐 이게 다 엉망이었는데...

관련 정보