Após atualizar alguns servidores de RHEL8 para RHEL9 usando o utilitário Leapp, há alguns avisos após a atualização em dnf
e rpm
: aviso: Assinatura não suportada. Algoritmo de hash SHA1 não disponível.
Toda vez que executei qualquer um desses comandos, recebi este aviso:
[root@web ~]# rpm -q kernel
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
kernel-5.14.0-362.18.1.el9_3.x86_64
kernel-5.14.0-427.18.1.el9_4.x86_64
kernel-5.14.0-427.20.1.el9_4.x86_64
[root@web ~]# dnf repolist
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
Updating Subscription Management repositories.
repo id repo name
rhel-9-for-x86_64-appstream-rpms Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
rhel-9-for-x86_64-baseos-rpms Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
Não sei de qual pacote ou o que desencadeia esse problema. A maioria das soluções disponíveis na web envolve reativar o SHA1, o que não é efetivamente uma solução.
Além disso, todos os pacotes estão marcados com, el9
exceto alguns gpg-pubkey
pacotes, então acho que não há nada do RHEL9 por aí.
[root@web ~]# rpm -qa | grep -v el9
warning: Signature not supported. Hash algorithm SHA1 not available.
warning: Signature not supported. Hash algorithm SHA1 not available.
gpg-pubkey-fd431d51-4ae0493b
gpg-pubkey-a14fe591-578876fd
gpg-pubkey-d4082792-5b32db75
Como posso rastrear o problema real para me livrar desses avisos?
Consultar todos os pacotes para obter sua assinatura. Qualquer um pode adicionar um "el9" para liberar string, não apenas RHEL.
rpm -qa --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SIGPGP:pgpsig} %{SIGGPG:pgpsig}\n' | grep SHA1
Os SHA1 antigos provavelmente são de repositórios de terceiros. RHEL e Fedora usam SHA256 ou melhor há algum tempo.
Com quaisquer descobertas, certifique-se de que o empacotador esteja ciente e trabalhando em assinaturas compatíveis com RHEL 9.
Remova quaisquer pacotes desnecessários. Contorne pacotes necessários com assinaturas fracas assinando você mesmo. Baixe, verifique,
rpmsign --resign
adicione a um repositório local. E, claro, esse repositório deve verificar com gpgcheck=1 e gpgkey. Requer apenas um ou dois hosts com políticas de criptografia legadas, em vez de todos os hosts.dnf install --setopt=tsflags=nocrypto
é uma solução alternativa ruim, porque você precisa fornecê-la toda vez ou o rpm dará erro . E nenhuma verificação de assinatura é pior do que verificações de assinatura obsoletas.Tudo bem, pelo menos em todos os meus servidores isso resolveu o problema:
Este comando removerá todos
gpg-pubkey
os pacotes à força. E isso parece estar OK, porque se as chaves estiverem faltando, ele será reimportado novamente no próximodnf
. Eu testei em mais de 20 servidores que foram atualizados do RHEL8 usandoleapp
.