Debian – GnuPG

Debian – GnuPG

Vous êtes ici :

1. Introduction

GnuPG est l’abréviation de GNU Privacy Guard. GnuPG est un clone de PGP (Pretty Good Privacy).

GnuPG permet de chiffrer des communications par le biais d’un algorythme de chiffrement à clés asymétriques, c’est à dire qu’une clé permet de signer le texte, et qu’une autre clé sert à crypter le texte.

2. Pourquoi faire une clé GPG ?

Si vous souhaitez pouvoir signer des documents et ainsi prouver que vous en êtes l’auteur ou bien encore crypter des documents (comme avec BackupManager pour réaliser des sauvegardes cryptées par exemple ou encore signer vos fichiers pour votre dépôt personnel Debian (voir l’article Debian – Dépôt Personnel).

3. Installation de GnuPG

Normalement GnuPG est d’office installé, si ce n’est pas le cas :

apt install --yes gnupg

4. Génération de la clé

gpg --gen-key
gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: Prénom Nom
Email address: monmail@domaine.fr
You selected this USER-ID:
    "Prénom Nom \"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: pinentry launched (3394 curses 1.0.0 ? ? ?)
gpg: pinentry launched (3397 curses 1.0.0 ? ? ?)
gpg: writing self signature
gpg: RSA/SHA256 signature from: "EDB427D1A42C9BD4 [?]"
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: writing key binding signature
gpg: RSA/SHA256 signature from: "EDB427D1A42C9BD4 [?]"
gpg: writing public key to '/home/monuser/.gnupg/pubring.kbx'
gpg: /home/monuser/.gnupg/trustdb.gpg: trustdb created
gpg: using pgp trust model
gpg: key EDB427D1A42C9BD4 marked as ultimately trusted
gpg: directory '/home/monuser/.gnupg/openpgp-revocs.d' created
gpg: writing to '/home/monuser/.gnupg/openpgp-revocs.d/3C23C1937G19D3721C178CE6EDB427D1A42C9BD4.rev'
gpg: RSA/SHA256 signature from: "EDB427D1A42C9BD4 Prénom Nom "
gpg: revocation certificate stored as '/home/monuser/.gnupg/openpgp-revocs.d/3C23C1937G19D3721C178CE6EDB427D1A42C9BD4.rev'
public and secret key created and signed.

pub   rsa2048 2018-08-07 [SC] [expires: 2020-08-06]
      3C23C1937G19D3721C178CE6EDB427D1A42C9BD4
      3C23C1937G19D3721C178CE6EDB427D1A42C9BD4
uid                      Prénom Nom 
sub   rsa2048 2018-08-07 [E] [expires: 2020-08-06]
Si vous avez l’erreur Permission non accordée :

gpg --gen-key
[...]
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: pinentry launched (3307 curses 1.0.0 ? ? ?)
gpg: agent_genkey failed: Permission non accordée
Key generation failed: Permission non accordée

Cela se corrige assez facilement, il faut changer le propriétaire du terminal en cours :

ls -la $(tty)
crw------- 1 autreuser tty 136, 1 août   7 15:48 /dev/pts/1
chown monuser $(tty)
gpg --gen-key

Si votre génération semble bloquée, c’est qu’il n’y a pas assez de nombres aléatoires générés.
Vous pouvez accéler les choses en faisant des accès disques, par exemple :

find /

Ou bien il existe rng-tools qui permet de générer de l’entropie (sinon haveged si vous n’avez pas de TRNG hardware) :

apt install rng-tools

5. GPG & Apt

5.1 Erreur à l’ajout d’un nouveau dépôt

Parfois lors de l’ajout d’un dépôt vous pouvez être confrontés à ce problème ci :

apt update
Lecture des listes de paquets... Fait
W: Erreur de GPG : http://deb.drgeek.io/stretch/nginx_pagespeed ./ Release : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY BAD338C0F38B8DA1
E: The repository 'http://deb.drgeek.io/stretch/nginx_pagespeed ./ Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

Il suffit de le régler en faisant cela :

apt-key adv --recv-keys --keyserver pgpkeys.mit.edu BAD338C0F38B8DA1
apt update
Si vous aviez déjà la clé mais quelle est expiré un petit refresh est nécessaire :

apt-key adv --keyserver keyserver.ubuntu.com --refresh-keys BAD338C0F38B8DA1

5.2 Création d’un nouveau dépôt

Voici comment envoyer sa clé public aux serveurs centraux (à faire obligatoirement si vous avez à faire un dépôt Debian personnel avec clé GPG).

Il faut lister les clés et récupérer son Key ID (identifiant) de la clé publique (ce qui est surligné).

gpg --list-keys --keyid-format LONG
/var/www/.gnupg/pubring.kbx
---------------------------
pub   rsa2048/DB427D1A42C9BD4 2018-08-07 [SC] [expires: 2020-08-06]
      3C23C1937G19D3721C178CE6EDB427D1A42C9BD4
uid                 [ultimate] Prénom Nom 
sub   rsa2048/AC538E0B32D7CA3 2018-08-07 [E] [expires: 2020-08-06]
gpg --keyserver pgpkeys.mit.edu --send-key DB427D1A42C9BD4

6. Exporter/Importer sa clé privée

6.1 Sauvegarder sa clé

Vous avez créée une clé, il faut donc la sauvegarder :

gpg --list-secret-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/home/user/.gnupg/pubring.kbx
------------------------
sec   rsa2048 2018-03-11 [SC]
      125DE03FACFBCCE34ACC6352B3200865DBC12577
uid           [ultimate] Prénom NOM 
ssb   rsa2048 2018-03-11 [E]
gpg --export-secret-key 125DE03FACFBCCE34ACC6352B3200865DBC12577 > maclevpriv.key

6.2 Importer sa clé

gpg --import maclevpriv.key

Suite à l’importation vous remarquez maintenant un « unknown » au lieu du « ultimate » ? :

gpg --list-secret-keys
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
/home/user/.gnupg/pubring.kbx
------------------------
sec   rsa2048 2018-03-11 [SC]
      125DE03FACFBCCE34ACC6352B3200865DBC12577
uid           [ultimate] Prénom NOM 
ssb   rsa2048 2018-03-11 [E]

Pour cela il faut réaliser les commandes suivantes :

gpg --edit-key mon@email.net
gpg> trust
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
gpg> save

7. Autres Commandes

7.1 Effacer sa clé

7.1.1 Publique
gpg --delete-keys
7.1.2 Privée
gpg --delete-secret-keys
7.1.3 Les 2 (privée & publique)
ggpg --delete-secret-and-public-keys

7.2 Lister les clés

gpg --list-keys

7.3 Revoquer sa clé

gpg --output revoke.asc --gen-revoke key-id
gpg --import revoke.asc 
gpg --keyserver keys.gnupg.net --send-keys key-id

7.4 Renouveler une clé expirée

gpg --edit-key 3C23C1937G19D3721C178CE6EDB427D1A42C9BD4
expire
1y

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.