보안 부팅이 활성화된 상태에서 자체 서명된 커널을 로드할 수 없습니다: "잘못된 패딩 서명"

보안 부팅이 활성화된 상태에서 자체 서명된 커널을 로드할 수 없습니다: "잘못된 패딩 서명"

보안 부팅으로 우분투를 실행하고 있습니다. 사양에서 패키지된 커널을 사용하면 모든 것이 잘 작동합니다. 그러나 자체 서명된 커널을 실행하는 데 문제가 있습니다. 내 MOK 키 서명이 괜찮다고 확신하지만(아래에서 확인됨) 올바른 항목을 선택한 후 grub에서 커널을 부팅하려고 하면 "로드 중... 오류: 잘못된 심" 기호라는 오류 메시지가 표시됩니다. "고생을 했지만 해결책을 찾을 수 없습니다. 두 커널이 모두 MOK 키로 서명되었음에도 불구하고 하나는 작동하지만 다른 하나는 작동하지 않는 이유는 무엇입니까?

확인하다:

root@T495:~# sbsign --key /var/lib/shim-signed/mok/MOK.priv --cert /var/lib/shim-signed/mok/MOK.pem /boot/vmlinuz
Image was already signed; adding additional signature

root@T495:~# sbverify --list /boot/vmlinuz
signature 1
image signature issuers:
 - /C=PL/ST=Poznan/L=Poznan/O=none/CN=Secure Boot Signing/[email protected]
image signature certificates:
 - subject: /C=PL/ST=yes/L=yes/O=none/CN=Secure Boot Signing/[email protected]
   issuer:  /C=PL/ST=yes/L=yes/O=none/CN=Secure Boot Signing/[email protected]
signature 2
image signature issuers:
 - /CN=ubuntu Secure Boot Module Signature key
image signature certificates:
 - subject: /CN=ubuntu Secure Boot Module Signature key
   issuer:  /CN=ubuntu Secure Boot Module Signature key

그리고

root@T495:~# openssl x509 -in /var/lib/shim-signed/mok/MOK.pem -fingerprint -noout
SHA1 Fingerprint=81:A2:93:CB:06:6F:52:BA:D9:E2:39:68:9D:FA:E2:2B:0C:95:3C:F7
root@T495:~# mokutil --list-enrolled | grep "81:a2:93"
SHA1 Fingerprint: 81:a2:93:cb:06:6f:52:ba:d9:e2:39:68:9d:fa:e2:2b:0c:95:3c:f7

무슨 일이 일어났는지 모르겠어요 :|

답변1

MOK.pem은 커널 모듈 서명만 지원하도록 설정된 확장 사용 속성을 사용하여 Ubuntu/Debian 시스템에서 생성됩니다. 이 인증서는 shim 확인을 통과하는 데 필요한 UEFI 부트로더 또는 커널에 서명하는 데 사용할 수 없습니다.

shim 소스 코드에서 이를 확인할 수 있습니다.

   #define OID_EKU_MODSIGN "1.3.6.1.4.1.2312.16.1.2"

   static BOOLEAN verify_eku(UINT8 *Cert, UINTN CertSize)
   {
    ...
    x509 = d2i_X509 (NULL, &Temp, (long) CertSize);
    if (x509 != NULL) {
        eku = X509_get_ext_d2i(x509, NID_ext_key_usage, NULL, NULL);
        if (eku) {
        ...
                if (OBJ_cmp(module_signing, key_usage) == 0)
                    return FALSE;
        ...
            }
        }
        return TRUE;
}

즉, module_signing 확장 키 사용이 설정된 경우 shim은 서명 인증서가 유효한 것으로 간주하지 않으며 grub 또는 Linux 커널 바이너리를 확인할 수 없습니다.

자신만의 보안 부팅 서명 인증서(EKU가 필요하지 않음)를 생성하고 이를 mok 또는 db에 등록한 후 서명에 사용하세요.

인용하다:https://wiki.ubuntu.com/UEFI/SecureBoot/KeyManagement/KeyGeneration

인용하다:https://github.com/rhboot/shim/blob/main/shim.c#L106

관련 정보