Este artigo explica como adicionar com segurança chaves OpenPGP e repositórios APT de terceiros em distribuições Debian, Ubuntu e Linux baseadas neles, como Linux Mint, Pop!_OS, Elementary OS e assim por diante, para substituir o obsoleto apt-key
.
Ao tentar adicionar uma chave de repositório APT usando apt-key
nas distribuições Debian, Ubuntu e Linux com base nelas, você verá a seguinte mensagem: "Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)) ".
A página do manual apt-key
menciona que o "uso de apt-key está obsoleto, exceto para o uso de apt-key del em scripts de mantenedor para remover chaves existentes do chaveiro principal". Além do mais, "apt-key estará disponível pela última vez no Debian 11 e Ubuntu 22.04."
A razão para esta mudança é que ao adicionar uma chave OpenPGP que é usada para assinar um repositório APT para /etc/apt/trusted.gpg
ou /etc/apt/trusted.gpg.d
, a chave é incondicionalmente confiável pelo APT em todos os outros repositórios configurados no sistema que não têm uma opção signed-by
(veja abaixo), até mesmo os repositórios oficiais do Debian/Ubuntu. Como resultado, qualquer repositório APT não oficial que tenha sua chave de assinatura adicionada a /etc/apt/trusted.gpg
ou /etc/apt/trusted.gpg.d
pode substituir qualquer pacote no sistema. Portanto, essa alteração foi feita por motivos de segurança (sua segurança).
Também vale a pena notar que, embora a mensagem de depreciação apt-key
diga "gerencie arquivos de chaveiro em trusted.gpg.d em vez disso", o wiki do Debian afirma o contrário. Isso porque adicionar chaves OpenPGP a /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
é igualmente inseguro, conforme mencionado acima.
Você pode continuar a usar o apt-key por enquanto, pois ele ainda funciona. No entanto, seria uma boa ideia começar a fazer a transição para usar a opção signed-by
conforme explicado abaixo, especialmente se você mantiver um repositório de terceiros.
1. Baixe a chave do repositório APT
De acordo com o wiki do Debian, a chave deve ser baixada por HTTPS para um local gravável apenas pelo root, por exemplo /usr/share/keyrings
. O nome da chave deve conter um nome abreviado que descreve o repositório, seguido por archive-keyring
. Por exemplo, se o repositório for denominado meurepositorio
, o arquivo de chave deverá ser denominado meurepositorio-archive-keyring.gpg
.
O arquivo de chave OpenPGP pode ser blindado com ASCII ou não. Para verificar se um arquivo de chave é protegido por ascii, baixe o arquivo de chave e execute este comando (observe que a extensão da chave pode ser .gpg, .asc, .key e provavelmente outras):
file
Se a saída desse comando for semelhante à seguinte, a chave é blindada com ascii:
repo-key.gpg: PGP public key block Public-Key (old)
Dito isto, veja como baixar e adicionar uma chave de assinatura de repositório ao seu sistema de maneira adequada e segura:
Para chaves OpenPGP blindadas ASCII
Para fazer o download usando wget e adicionar tal Chave OpenPGP para o seu sistema, use:
wget -O-
O que tudo neste comando significa/significa :
wget
baixa a chave de https://example.com/key/repo-key.gpg
e envia a chave para stdout (-O-
). Substitua o URL aqui pelo URL da chave que você deseja baixar e adicionar ao seu sistemagpg --dearmor
: o comando gpg
é a ferramenta de criptografia e assinatura OpenPGP; sua opção --dearmor
descompacta a entrada de uma armadura OpenPGP ASCIIsudo tee /usr/share/keyrings/<meurepositorio>-archive-keyring.gpg
: como superusuário (sudo
), leia a entrada padrão, que neste caso é a saída fornecida por gpg --dearmor
, e grave-a no arquivo /usr/share/keyrings/<meurepositorio>-archive-keyring.gpg
. Substitua o nome <meurepositorio>
por um nome descritivo para a chave do repositório que você está adicionandoPor exemplo, para adicionar o repositório APT do aplicativo Signal, você usaria:
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-archive-keyring.gpg
Ou para usar o comando fornecido como exemplo no wiki do Debian (você precisa executá-lo como root, por exemplo, após executar sudo -i
; ele usa curl
em vez de wget
para baixar a chave):
curl
Exemplo de uso deste comando para adicionar o repositório Signal APT:
curl https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /usr/share/keyrings/signal-archive-keyring.gpg
Baixe a chave OpenPGP usando wget e adicione-a ao seu sistema usando:
wget -O-
Ou para usar o comando fornecido como exemplo no wiki do Debian (você precisa executá-lo como root, por exemplo, após executar sudo -i
):
wget -O /usr/share/keyrings/
Eu não adicionei um exemplo aqui porque não consegui encontrar um repositório de terceiros que usa uma chave OpenPGP não blindada com ASCII.
/usr/share/keyrings
:sudo gpg --no-default-keyring --keyring /usr/share/keyrings/
Em vez de hkp://keyserver.ubuntu.com:80
, você pode usar algum outro servidor de chaves, se desejar.
Exemplo no qual importaremos a chave OpenPGP do Linux Uprising Shutter PPA para /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg
(a impressão digital pode ser obtida clicando no link verde "Detalhes técnicos sobre este PPA" na página do PPA - está em "Adicionando este PPA para o seu sistema "):
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/linux-uprising-shutter-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 1CC3D16E460A94EE17FE581CEA8CACC073C3DB2A
Você também pode gostar de: Como evitar que um pacote seja atualizado no Ubuntu, Debian ou Linux Mint [APT]
2. Adicione a entrada sources.list do repositório
As entradas sources.list do repositório de terceiros devem ser adicionadas no diretório /etc/apt/sources.list.d
, e não diretamente no arquivo /etc/apt/sources.list
.
Anteriormente, um arquivo sources.list do diretório /etc/apt/sources.list.d
seria assim:
deb https://repository.example.com/debian/ stable main
No entanto, para poder usar a chave adicionada na etapa 1, a entrada sources.list deve agora ter esta aparência (/etc/apt/sources.list.d/<meurepositorio.list>
):
deb [signed-by=/usr/share/keyrings/
É importante observar aqui que se você também deseja adicionar a opção arch=amd64
junto com signed-by
, é necessário separar as duas opções por um espaço, assim:
deb [arch=amd64 signed-by=/usr/share/keyrings/
Como exemplo, para adicionar o repositório Signal ao seu sistema Debian/Ubuntu, crie um arquivo (como root; por exemplo, para abrir o editor de texto da linha de comando Nano com este arquivo: sudo nano /etc/apt/sources.list.d/signal.list
) chamado signal.list
em /etc/apt/sources.list.d
com o seguinte conteúdo (assumindo que você ' já baixei a chave conforme explicado acima, como /usr/share/keyrings/signal-archive-keyring.gpg
):
deb [arch=amd64 signed-by=/usr/share/keyrings/signal-archive-keyring.gpg] https://updates.signal.org/desktop/apt xenial main
Lembre-se de executar sudo apt update
após adicionar uma nova chave de assinatura e repositório, para atualizar as fontes de software.
Você também pode adicionar o repositório no formato de arquivo Deb822, mas para tentar não complicar ainda mais as coisas, não vou explicar isso aqui. Você pode ler sobre isso no wiki do Debian.
Você também pode gostar de: Como encontrar o pacote que fornece um arquivo (instalado ou não) no Ubuntu, Debian ou Linux Mint
Ao adicionar chaves OpenGPG conforme explicado acima, você desejará remover a mesma chave de /etc/apt/trusted.gpg ou /etc/apt/trusted.gpg.d, caso a tenha adicionado anteriormente. Sem fazer isso, não há benefício de segurança adicional.
Remover as chaves OpenPGP existentes do diretório /etc/apt/trusted.gpg.d
deve ser muito fácil. Isso ocorre porque o nome do arquivo da chave deve ser bem descritivo. Por exemplo, o nome de arquivo da chave gpg do repositório Tor deste diretório em meu sistema é deb.torproject.org-keyring.gpg
Portanto, para se livrar das chaves já existentes adicionadas ao /etc/apt/trusted.gpg.d
, tudo o que você precisa fazer é remover os arquivos da chave. Você precisa fazer isso como root, então abra o gerenciador de arquivos de sua escolha como root, usando admin://
(por exemplo, para abrir um local como root no Nautilus, pressione Ctrl + L
para que possa digitar na barra de endereço e digite admin:///etc/apt/trusted.gpg.d
) ou remova-os da linha de comando, usando:
sudo rm /etc/apt/trusted.gpg.d/
/etc/apt/trusted.gpg.d
. *Quanto a remover as chaves gpg APT armazenadas em /etc/apt/trusted.gpg
, as coisas são um pouco mais complicadas. Use o seguinte comando para listar todas as chaves APT OpenPGP importadas em /etc/apt/trusted.gpg
e /etc/apt/trusted.gpg.d
:
apt-key list
As chaves armazenadas em /etc/apt/trusted.gpg
devem ser listadas no topo, seguidas pelas chaves do diretório /etc/apt/trusted.gpg.d
. Você precisará inspecionar a chave uid
para descobrir a chave que deseja remover. Normalmente, o uid deve mostrar a empresa ou usuário que assinou a chave, seguido do endereço de e-mail.
As chaves de /etc/apt/trusted.gpg
são listadas pela lista apt-key
como esta (exemplo):
pub rsa4096 2016-04-22 [SC] B9F8 D658 297A F3EF C18D 5CDF A2F6 83C5 2980 AECFuid [ unknown] Oracle Corporation (VirtualBox archive signing key) <[email protected]>sub rsa4096 2016-04-22 [E]
O ID da chave são os últimos 8 caracteres da impressão digital da chave GPG (portanto, neste exemplo, é 2980AECF
).
Para excluir uma chave (de /etc/apt/trusted.gpg
ou /etc/apt/trusted.gpg.d
), agora você pode usar:
sudo apt-key del
Por exemplo, para excluir a chave do exemplo acima, você usaria:
sudo apt-key del 2980AECF
Você pode gostar de: Como listar todos os pacotes em um repositório no Ubuntu, Debian ou Linux Mint [APT]
Referências:
Obrigado a u/ZebNemeth pela sugestão!
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
apt-key Is Deprecated. How To Add OpenPGP Repository Signing Keys Without It On Debian, Ubuntu, Linux Mint, Pop!_OS, Etc.