AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 445772
Accepted
Weishan Yang
Weishan Yang
Asked: 2018-05-25 06:43:19 +0800 CST2018-05-25 06:43:19 +0800 CST 2018-05-25 06:43:19 +0800 CST

Como adicionar uma chave pública ao chaveiro do sistema para o kernel sem recompilar?

  • 772

Desejo adicionar uma chave pública do par de chaves que usei para assinar meu módulo do kernel em system_keyring. No entanto, há um problema:

Com o comando de cat /proc/keys | grep system_keyring, obtive a entrada (ID) de system_keyring. No entanto, ao tentar adicionar minha chave pública com este comando: keyctl padd asymmetric "" 0xXXXXXXXX</test/signing_key.x509, recebi o erro "Permissão negada".

Acho que é devido à restrição descrita no "module_signing.txt" https://01.org/linuxgraphics/gfx-docs/drm/admin-guide/module-signing.html :

Observe, no entanto, que o kernel só permitirá que as chaves sejam adicionadas ao .system_keyring se o wrapper X.509 da nova chave for validamente assinado por uma chave que já resida no .system_keyring no momento em que a chave foi adicionada.

No entanto, não consigo encontrar nenhum documento que descreva como assinar o "x.509 wrapper" com a chave já residente no .system_keyring.

Além disso, acho que as chaves nesse chaveiro são apenas chaves públicas. Então, eu nem acho que vai funcionar, mesmo que eu consiga extrair a chave pública do chaveiro e assinar o "invólucro X.509" com essa chave pública.

De qualquer forma, preciso de alguma ajuda aqui. Ou, mesmo que algo possa me dar uma dica de como enviar meu módulo do kernel para o RedHat para que ele possa ser assinado pelo RedHat e instalado na instalação do usuário sem reconstruir o kernel?

linux kernel
  • 1 1 respostas
  • 6277 Views

1 respostas

  • Voted
  1. Best Answer
    telcoM
    2018-05-26T00:24:35+08:002018-05-26T00:24:35+08:00

    O chaveiro do sistema obtém seu conteúdo de cinco fontes:

    • chaves incorporadas no kernel em tempo de compilação (obviamente não alteráveis ​​sem recompilação)
    • Variável UEFI Secure Boot db- dependendo do seu firmware, você pode ou não conseguir alterar isso
    • Variável UEFI Secure Boot dbx- como a anterior, mas esta é uma lista negra, então você não gostaria de adicionar sua chave aqui de qualquer maneira
    • chaves incorporadas shim.efi- não alteráveis ​​sem recompilação, e você provavelmente teria que obter o shim assinado novamente depois, a menos que tenha assumido o controle de sua inicialização segura PK= muito incômodo
    • Variável UEFI MOK(usada por shim.efi) - esta pode ser sua melhor esperança.

    Para importar sua chave para o MOK, você deve primeiro garantir que shim.efiesteja envolvido no processo de inicialização (consulte Recursos efibootmgr -v).

    Em seguida, tenha a chave/certificado com que seu módulo está assinado no formato DER e inicie o processo de importação usando o mokutilcomando:

    mokutil --import your_signing_key.pub.der
    

    O comando exigirá que você defina uma nova senha de importação: essa senha será usada na próxima etapa e não é nenhuma senha existente antes. Como de costume, ao definir uma nova senha, mokutilserá necessário digitar essa senha duas vezes.

    Então, na próxima vez que você reiniciar o sistema, shim.efiverá que uma nova chave MOK está pronta para importação e exigirá que você digite a senha de importação definida na etapa anterior. Depois de fazer isso uma vez, a nova chave será armazenada na variável UEFI MOK persistentemente e o kernel a incluirá automaticamente no chaveiro do sistema.

    Se você não estiver usando UEFI, não poderá adicionar novas chaves ao chaveiro do sistema sem recompilar o kernel. Mas, por outro lado, se o Secure Boot não estiver ativado, o kernel permitirá o carregamento de módulos do kernel sem assinatura ou com uma assinatura não verificável - ele apenas define um dos flags taint do kernel para marcar que um módulo do kernel não distribuído foi carregado.

    Fonte: RHEL 7 Kernel Administration Guide, Chapter 2.8 "Signing Kernel Modules for Secure Boot"

    • 4

relate perguntas

  • astyle não altera a formatação do arquivo de origem

  • Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • Acesse o sistema de arquivos como usuário root

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve