Acontece que traduzo este artigo que ele escreveu James Bottomley, consultor técnico do Fundação Linux, que começou a montar um pré-bootloader para que você possa inicializar o Linux.
Como expliquei em meu post anterior, temos o código para o pré-bootloader Linux Foundation no lugar. No entanto, houve um atraso enquanto tínhamos acesso ao sistema de assinatura da Microsoft.
A primeira coisa a fazer é pague $ 99 para a Verisign (agora Symantec) e ter uma chave verificada pela Verisign. Fizemos isso para a Linux Foundation, e tudo o que eles querem fazer é ligar para a sede para verificar. A chave retorna em um URL instalado em seu navegador, mas as ferramentas SSL SSL padrão podem ser usadas para extraí-la e criar um certificado e uma chave PEM usuais. Não tem nada a ver com a assinatura UEFI, mas é usado para validar o sistema desenvolvedor de sistema Microsoft que você é quem diz ser. Antes de criar uma conta sysdev, você deve testá-la assinar um executável que eles fornecem a você e carregá-lo. Eles fazem requisitos estritos para que você assine em uma plataforma Windows específica, mas pelo menos funcionou e bingo nossa conta foi criada.
Uma vez que a conta é criada, você ainda não pode carregar binários UEFI para assinar sem primeiro assinar um contrato de papel. Os negócios são muito onerosos, incluindo muitas licenças excluídas (incluindo todos os GPLs para drivers, mas não para bootloaders). O mais oneroso é que os acordos parecem chegar além dos objetos UEFI que você assina. Os advogados da Linux Foundation concluíram que é basicamente inofensivo para a LF porque não vendemos produtos, mas pode ser nojento para outras empresas. De acordo com Matthew Garrett, a Microsoft está disposta a negociar acordos especiais com distribuições para mitigar alguns desses problemas.
Assim que os acordos forem assinados, o real diversão técnica. Você não pode simplesmente carregar um binário UEFI e assiná-lo. Primeiro você tem que envolva-o em um arquivo .cab. Felizmente, existe um projeto de código aberto que pode criar arquivos de gabinete chamados lcab. Então você tem que assine o arquivo .cab com a chave Verisign. Novamente, há outro projeto de código aberto que pode fazer isso: osslsigncode. Para qualquer pessoa que precise dessas ferramentas, elas estão disponíveis em meu repositório openSuse Build Service UEFI. O problema final é que fazer o upload do arquivo requer silverlight. Infelizmente, o moonlight não parece funcionar e mesmo com a visualização da versão 4, a caixa de upload fica em branco, então é hora de usar o Windows 7 sob um kvm (máquina virtual baseada em kernel). Quando você chegar nessa parte, também terá que certificar que o binário “para ser assinado, não deve ser licenciado sob GPLv3 ou licenças de código aberto semelhantes”. Presumo que seja por medo da divulgação da chave, mas não é nada claro (o mesmo com "licenças de código aberto semelhantes").
Assim que o upload for concluído, o arquivo de gabinete será interrompido por sete estágios. Infelizmente, a primeira escalada de teste permaneceu bloqueado no estágio 6 (a assinatura dos arquivos). Após 6 dias, enviei um email de suporte para a Microsoft perguntando o que estava acontecendo. A resposta: “O código de erro lançado pelo processo de assinatura é que seu arquivo não é um aplicativo Win32 válido. É um aplicativo Win32 válido? ”. Resposta: obviamente não, é um binário UEFI válido de 64 bits. Não houve mais respostas...
Eu tentei novamente. Desta vez, recebi um e-mail de download do arquivo assinado e o quadro diz que o assinado falhou. Eu baixei e verifiquei. O binário funciona na plataforma secureboot e é assinado com a chave
assunto = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
emissor = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011Eu perguntei ao suporte porque o processo indicava uma falha, mas eu tinha um download válido e, após uma enxurrada de e-mails, eles responderam “não use aquele arquivo que foi assinado erroneamente. Eu vou voltar para você. " Ainda não tenho certeza de qual é o problema, mas se você olhar para o assunto da chave de assinatura, não há nada na chave para indicar à Linux Foundation, portanto, suspeito que o problema é que o binário é assinado com uma chave genérica da Microsoft em vez de uma chave específica (e revogável) vinculada à Linux Foundation.
No entanto, este é o status: Continuaremos esperando a Microsoft fornecer à Linux Foundation um pré-bootloader assinado e validado. Quando isso acontecer, ele será carregado no site da Linux Foundation para que todos possam usar.
fonte: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Tire suas conclusões, mas isso vai levar tempo.