Avertissement
Il ne s’agit pas de copier/coller bêtement les lignes de commande mais d’essayer de les comprendre et de vous les approprier.
Comme modifier "mon@mail.fr" par votre mail… Et mettre votre propre ID
Pour comprendre comment est faite une clé GnuPG
pub rsa4096/0x2C07D84901065A3D 2024-11-10 [SC] Empreinte de la clef = 32B2 C27E 1C7D 3D68 8FA1 D49F 2C07 D849 0106 5A3D uid sima78 (clés perso 01) <mon@mail.fr> sub rsa4096/0x373FEA503684F9B2 2024-11-10 [E]
pub : est la clé publique, l’ID est entre le "/" et avant 2024, utilisée pour chiffrer ou vérifier des signatures.
Empreinte de la clé : est l’empreinte complète qui permet de faire des vérifications.
uid : Identité de l'utilisateur associée à la clé publique (nom, email).
sub : Clé secondaire, souvent utilisée pour des rôles spécifiques comme le chiffrement.
Renouvellement de la clé GnuPG
Je commence par lister les clés
gpg –list-key
Là je constate que j’ai une grande quantité de clés publiques expirées.
Faire le ménage et commencer par identifier les clés publiques expirées
Faire le ménage, supprimer les clés expirées est tout à fait optionnel. Vous pouvez le faire après, ou ne pas le faire.
La procédure de renouvellement commence vraiment à "Révoquer l'ancienne clé".
gpg --list-keys --with-colons | awk -F: '/^pub:e:/ {print $5}'
Permets de lister les clés expirées
Pour les supprimer deux possibilités
Dans mes penses-bêtes j'ai un script et une ligne de commande. Je vous mets les deux mais j'ai utilisé la ligne de commande plus bas, je n'ai pas retesté mon script.
Mon script avec une structure conditionnelle "if, then, fi" et une boucle "for do done"
#!/bin/bash # Script de suppression des clés publiques GPG expirées # Vérifier si la commande gpg est disponible if ! command -v gpg &> /dev/null; then echo "Erreur : gpg n'est pas installé." >&2 exit 1 fi # Parcourir en boucle chaque clé GPG expirée et la supprimer for key in $(gpg --list-keys --with-colons | awk -F: '/^pub:e:/ {print $5}'); do echo "Suppression d'une clé expirée: $key" gpg --batch --yes --delete-keys "$key" || { echo "Échec de la suppression de la clé: $key" >&2 } done echo "La suppression des clés expirées est terminée." exit 0
Ou en une ligne, ce que j’ai utilisé
gpg --list-keys --with-colons | awk -F: '/^pub:e:/ {print $5}' | xargs -I {} gpg --batch --yes --delete-keys {}
- gpg --list-keys --with-colons : Liste toutes les clés
- awk -F: '/^pub:e:/ {print $5}' : Filtre les clés publiques expirées (pub:e) et extrait leur ID.
- xargs -I {} gpg --batch --yes --delete-keys {} : Utilise xargs pour passer chaque ID de clé expirée à gpg --delete-keys, supprimant ainsi les clés sans confirmation.
Cette commande supprime toutes les clés publiques expirées de manière automatique.
Mettre à jour les clés de votre trousseau
Pour synchroniser toutes les clés dans votre trousseau avec le serveur de clés et obtenir les dernières informations (comme les révocations), utilisez :
gpg –refresh-keys
Cela vérifie chaque clé de votre trousseau et télécharge les mises à jour disponibles, y compris les certificats de révocation, de tous les serveurs de clés configurés.
Révoquer l’ancienne clé
sima78@jilipolla:~$ gpg --output revocation_certificat.asc --gen-revoke mon@mail.fr gpg: 'mon@mail.fr' matches multiple secret keys: gpg: sec rsa4096/0x2A5F500DD27DD6FB 2017-02-22 sima78 <mon@mail.fr> gpg: sec dsa3072/0x038072C036D4F9CD 2015-09-21 Sima78 <mon@mail.fr>
Ah, j’ai deux ID dont une est déjà expirée, c’est dont la première que je dois choisir.
sima78@jilipolla:~$ gpg --output revocation_certificat.asc --gen-revoke 0x2A5F500DD27DD6FB sec rsa4096/0x2A5F500DD27DD6FB 2017-02-22 sima78 <mon@mail.fr> Faut-il créer un certificat de révocation pour cette clef ? (o/N) o choisissez la cause de la révocation : 0 = Aucune cause indiquée 1 = La clef a été compromise 2 = La clef a été remplacée 3 = La clef n'est plus utilisée Q = Annuler (Vous devriez sûrement sélectionner 1 ici) Quelle est votre décision ? 0 Entrez une description facultative, en terminant par une ligne vide : > ancienne > Cause de révocation : Aucune cause indiquée ancienne Est-ce d'accord ? (o/N) o sortie forcée avec armure ASCII. Certificat de révocation créé. Veuillez le déplacer sur un support que vous pouvez cacher ; toute personne accédant à ce certificat peut l'utiliser pour rendre votre clef inutilisable. Imprimer ce certificat et le stocker ailleurs est une bonne idée, au cas où le support devienne illisible. Attention tout de même : le système d'impression utilisé pourrait stocker ces données et les rendre accessibles à d'autres.
Importer le certificat de révocation
sima78@jilipolla:~$ gpg --import revocation_certificat.asc gpg: clef 0x2A5F500DD27DD6FB : « sima78 <mon@mail.fr> » certificat de révocation importé gpg: Quantité totale traitée : 1 gpg: nouvelles révocations de clef : 1 gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: profondeur : 0 valables : 1 signées : 0 confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.
Envoyer sur le serveur de clés la révocation
sima78@jilipolla:~$ gpg --send-keys --keyserver keys.openpgp.org 0x2A5F500DD27DD6FB gpg: envoi de la clef 0x2A5F500DD27DD6FB à hkp://keys.openpgp.org
Générer la nouvelle clé
sima78@jilipolla:~$ gpg --full-generate-key gpg (GnuPG) 2.4.4; Copyright (C) 2024 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Sélectionnez le type de clef désiré : (1) RSA and RSA (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (9) ECC (sign and encrypt) *default* (10) ECC (signature seule) (14) Existing key from card Quel est votre choix ? 1 les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits. Quelle taille de clef désirez-vous ? (3072) 4096 La taille demandée est 4096 bits Veuillez indiquer le temps pendant lequel cette clef devrait être valable. 0 = la clef n'expire pas <n> = la clef expire dans n jours <n>w = la clef expire dans n semaines <n>m = la clef expire dans n mois <n>y = la clef expire dans n ans Pendant combien de temps la clef est-elle valable ? (0) 0 La clef n'expire pas du tout Est-ce correct ? (o/N) o GnuPG doit construire une identité pour identifier la clef. Nom réel : sima78 Adresse électronique : mon@mail.fr Commentaire : clés perso 01 Vous utilisez le jeu de caractères « utf-8 ». Vous avez sélectionné cette identité : « sima78 (clés perso 01) <smon@mail.fr > » Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? O De nombreux octets aléatoires doivent être générés. Vous devriez faire autre chose (taper au clavier, déplacer la souris, utiliser les disques) pendant la génération de nombres premiers ; cela donne au générateur de nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie. De nombreux octets aléatoires doivent être générés. Vous devriez faire autre chose (taper au clavier, déplacer la souris, utiliser les disques) pendant la génération de nombres premiers ; cela donne au générateur de nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie. gpg: répertoire « /home/sima78/.gnupg/openpgp-revocs.d » créé gpg: revocation certificate stored as '/home/sima78/.gnupg/openpgp-revocs.d/32B2C27E1C7D3D688FA1D49F2C07D84901065A3D.rev' les clefs publique et secrète ont été créées et signées. pub rsa4096/0x2C07D84901065A3D 2024-11-10 [SC] Empreinte de la clef = 32B2 C27E 1C7D 3D68 8FA1 D49F 2C07 D849 0106 5A3D uid sima78 (clés perso 01) <mon@mail.fr> sub rsa4096/0x373FEA503684F9B2 2024-11-10 [E]
On vérifie la liste des clés et note l'ID de la nouvelle clé
Une fois la nouvelle clé créée, listez vos clés pour noter l'ID de votre nouvelle clé :
gpg –list-keys
Exporter votre nouvelle clé publique
Exportez votre nouvelle clé publique pour la partager avec vos contacts :
sima78@jilipolla:~$ gpg --export --armor 0x2C07D84901065A3D > 2024-gnupg-sima78.asc
Publier la nouvelle clé publique sur un serveur de clés
Cela permet à vos contacts de retrouver votre nouvelle clé via un serveur de clés public, comme keys.openpgp.org. Il en existe plusieurs mais ils se synchronisent ente-eux
sima78@jilipolla:~$ gpg --send-keys --keyserver keys.openpgp.org 0x2C07D84901065A3D gpg: envoi de la clef 0x2C07D84901065A3D à hkp://keys.openpgp.org
Il ne reste plus qu’à configurer les clients mail pour utiliser la nouvelle clé
Chaque client mail a des procédures spécifiques pour sélectionner une nouvelle clé GnuPG. Je ne vais donc pas détailler ici.
Récapitulatif des commandes que j’ai utilisées.
- gpg –list-key
- gpg --list-keys --with-colons | awk -F: '/^pub:e:/ {print $5}'
- gpg --list-keys --with-colons | awk -F: '/^pub:e:/ {print $5}' | xargs -I {} gpg --batch --yes --delete-keys {}
- gpg –refresh-keys
- gpg --output revocation_certificat.asc --gen-revoke mon@mail.fr
- gpg --output revocation_certificat.asc --gen-revoke 0x2A5F500DD27DD6FB
- gpg –full-generate-key
- gpg --export --armor 0x2C07D84901065A3D > 2024-gnupg-sima78.asc
- gpg --send-keys --keyserver keys.openpgp.org 0x2C07D84901065A3D
Les commandes 2, 3 et 4 sont optionnelles, j’avais juste besoin de faire du ménage.
Précisions, réflexion :
Il est fortement conseillé de créer un certificat de révocation de votre nouvelle clé que vous garderez précieusement dans vos sauvegardes. En effet, si pour une raison quelconque vous perdez votre paire de clés ou que votre clé est corrompue vous pourrez l’exporter pour révoquer votre clé et en recréer une nouvelle.
En écrivant cet article j'ai regardé ce que faisaient d’autres blogueurs, beaucoup commencent par générer la nouvelle clé et termine par la révocation de l’ancienne clé, c’est aussi une logique qui se tient.
Il existe de plus en plus de fournisseurs de messageries qui proposent la possibilité de chiffrement assymétrique de vos mails et signatures de façon simplifiée.
Pour aller plus loin
Gnu Privacy Guard (GnuPG) Mini Howto (Français)
Le manuel de GNU Privacy Guard (Français)
Vous pouvez vous lâcher dans les commentaires.
Le billet "GnuPG Renouveler sa clé de chiffrement" est apparu en premier sur le blog de Sima78.
2 réactions
1 De Iceman - 14/11/2024, 06:01
Le problème dans tout cela, c'est de convaincre une personne réfractaire aux lignes de commandes...Bref, ça s'adresse à des fous comme nous, pas au grand public. Déjà protnmail et tutanota c'est compliqué pour certains. Mais bon, ce rappel n'est pas inutile quand même et les gens aimaient aussi envoyer des cartes postales sans enveloppe.
2 De sima78 - 17/11/2024, 08:05
@Iceman : Il est vrai que ce n’est pas facile de convaincre, il faut reconnaître que ce n’est pas simple et mon article ne donne pas non-plus dans la simplicité, c’est un pense-bête très personnel qui peut intéresser ceux qui connaissent déjà.
Cela-dit j’ai reçu un mail avec des questions sur le sujet et je compte y répondre par un billet qui sera plus intuitif, j’espère.