Comment corriger les erreurs (en fait des alertes) du type : âSignature by key ... uses weak algorithmâ lors de la mise Ă jour de votre systĂšme ?
W: https://ppa.launchpadcontent.net/openshot.developers/ppa/ubuntu/dists/jammy/InRelease: Signature by key FBA0C227099A5360635E3D9152165BD6B9BA26FA uses weak algorithm (rsa1024)
W: http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/noble/InRelease: Signature by key E1DD270288B4E6030699E45FA1715D88E1DF1F24 uses weak algorithm (rsa1024)
Launchpad est un site de dĂ©veloppement collaboratif essentiellement utilisĂ© dans le cadre du dĂ©veloppement d'Ubuntu et dâautres projets de Canonical. Mais câest Ă©galement une plateforme utilisĂ©e pour le dĂ©veloppement dâautre applications comme MySQL ou KDEnLive.
Hormi le développement des logiciels, il est surtout connu par les utilisateurs de Linux (et plus particuliÚrement de utilisateurs des dérivés de Debian) comme étant un aggrégateur de PPA.
Les Personal Package Archives (abrégés PPA) sont des dépÎts de paquets logiciels offerts aux individus et aux équipes de développeurs désireux de proposer facilement leurs logiciels pour les utilisateurs d'Ubuntu et dérivés. Si l'application contenue dans le PPA est mise à jour, alors, l'application sera mise à jour lors d'une mise à jour du systÚme.
Câest quoi le problĂšme ?
Les clĂ©s des dĂ©pĂŽts de launchpad utilisait des clĂ©s RSA 1024 bits, ce qui est aujourdâhui beaucoup trop facile Ă casser. Le risque est quâun tiers se fasse passer pour launchpad et serve des paquets compromis mais correctement signĂ©s.
Câest pour cela que les clĂ©s RSA 1024 bits (et 2048 bits) sont aujourdâhui Ă bannir.
Launchpad à déjà résolu ce problÚme de son cÎté en mettant en place de nouvelles clés, cependant votre ordinateur ne les connaßt pas.
La solution
Il faut supprimer les dépÎts en cause et les réinstaller en utilisant les nouvelles clés (4096 bits).
Mais avant de les réinstaller posez-vous la question :
Pourquoi ai-je ajouté ce PPA et est-il encore utile ?
Depuis lâinterface graphique
Dans lâapplication « Sources de logiciels » (En anglais : âSoftware Sourcesâ), vous devrez supprimer les PPA en cause.
Puis le rĂ©installer (ou pas dâailleurs) ce qui se fait dans au mĂȘme endroits dans le logiciel.
Depuis la ligne de commande
Il faut supprimer les fichiers correspondant aux PPA affectés.
Voici comment retrouver ces fichiers :
opts=() ; while read -r url ; do opts+=(-e "${url}") ; done < <( sudo apt update 2>&1 | grep 'Signature by key' | sed -E 's,^W: http[s]*://(.*)/dists/.*: Signature by key.*$,\1,g' ) ; grep -l -R -F "${opts[@]}" /etc/apt/sources.list.d/ /etc/apt/sources.list
-
Explications
Commençons par formater le code pour le rendre plus lisible :
opts=() while read -r url ; do opts+=(-e "${url}") done < <( sudo apt update 2>&1 | grep 'Signature by key' | sed -E 's,^W: http[s]*://(.*)/dists/.*: Signature by key.*$,\1,g' ) grep -l -R -F "${opts[@]}" /etc/apt/sources.list.d/ /etc/apt/sources.list
- Initialise le tableau
opts
opts=()
Ensuite il y a une boucle while qui est alimentĂ© Ă lâaide
< <( ⊠)
, câest donc le rĂ©sultat de ENTRĂE qui est traitĂ© en premier.Plus prĂ©cisĂ©ment, les traitements sont faits en parallĂšle, puisque la boucle while*, dans sa condition, lit ligne par ligne ce qui est produit dans
ENTRĂE
.while CONDITION ; do ACTION done < <( ENTRĂE )
Regardons comment on construit
ENTRĂE
 :sudo apt update 2>&1 | grep 'Signature by key' | sed -E 's,^W: http[s]*://(.*)/dists/.*: Signature by key.*$,\1,g'
LâidĂ©e est de rĂ©cupĂ©rer les messages de warning de la commande apt concernant les problĂšmes de signature, puis dâen extraire lâURL correspondant au PPA.
sudo apt update 2>&1
On utilise la commande sudo pour obtenir les privilĂšges administrateur requit par
apt update
.Les warnings nâĂ©tant pas affichĂ©s sur la sortie standard (la sortie 1), mais sur la sortie dâerreur (la sortie 2), il faut rediriger la sortie dâerreur vers la sortie standard, ce qui se fait avec la notation
2>&1
.grep 'Signature by key'
La commande grep sert à ne conserver que les lignes contenant le warning recherché.
sed -E 's,^W: http[s]*://(.*)/dists/.*: Signature by key.*$,\1,g'
Avec la commande sed on extrait une partie de lâURL, celle correspondant Ă lâadresse du PPA. Ainsi sur chaque ligne on aura une URL.
Du coup, on peut s'attaquer à la boucle, qui est finalement trÚs simple :
opts=() # while read -r url ; do opts+=(-e "${url}") done < <( ENTRĂE )
Pour chaque URL en entrée, on ajoute deux valeurs dans le tableau
opts
, le drapeau-e
suivit de lâURL. Et câest tout.Le dĂ©nouement sur joue sur la derniĂšre ligne :
grep -l -R -F "${opts[@]}" /etc/apt/sources.list.d/
LâidĂ©e est de rechercher les URLs dans tous les fichiers du dossier
/etc/apt/sources.list.d/
, ce qui est fait grĂące au drapeau-R
, et on nâaffiche que le nom du fichier Ă lâaide du drapeau-l
.Le drapeau
-F
quant Ă lui, est lĂ pour indique que les patterns (dans notre cas les URLs) ne doivent pas ĂȘtre interprĂ©tĂ© et donc que c'est bien exactement la chaĂźne donnĂ©e qui est recherchĂ©e.La notation
"${opts[@]}"
indique que lâon souhaite le tableau comme des paramĂštres de la commande.La commande sera rĂ©Ă©crite dans la forme suivante :
grep -l -R -F -e URL1 -e URL2 /etc/apt/sources.list.d/
Le paramĂštre
-e
utilisĂ© plusieurs fois correspond Ă lâopĂ©rateur logique ou. - Initialise le tableau
Vous obtiendrez quelque chose comme:
/etc/apt/sources.list.d/git-core-ppa-focal.list
/etc/apt/sources.list.d/openshot_developers-ppa-jammy.list
Avant de continuer, je vous encourage à sauvegarder les fichiers que vous allez supprimer. Vous pouvez temporairement les mettre sur votre bureau :
cp FILE1 FILE2 "$( xdg-user-dir DESKTOP )/"
Puis supprimer les fichiers :
sudo rm FILE1 FILE2
Enfin vous devez informer le systÚme de ce changement :
sudo apt update
Réinstaller uniquement les dépÎts qui sont encore nécessaires.
Liens
- Présentation de Launchpad sur Wikipédia.
- Le site aunchpad.net
- How to fix Launchpad PPA which uses a key with weak algorithm?
- How to fix Launchpad PPA which uses a key with weak algorithm when packaging recipe is used?
- New requirements for APT repository signing in 24.04
- How can I get a list of all repositories and PPAs from the command line into an install script?
኿