cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

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.

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

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog