Gnupg
De Linuxmemo.
(→Commandes GnuPG essentielles) |
(→Astuces) |
||
| (42 versions intermédiaires masquées) | |||
| Ligne 7 : | Ligne 7 : | ||
==Serveur de clés== | ==Serveur de clés== | ||
https://pgp.mit.edu/ | https://pgp.mit.edu/ | ||
| - | http://keys.gnupg.net | + | http://keys.gnupg.net/ |
| + | https://pgp.key-server.io/ | ||
| + | |||
| + | hkp://p80.pool.sks-keyservers.net:80 | ||
| + | |||
| + | * default keys server | ||
| + | The upstream default currently uses the SKS keyservers. The IP you saw is one of those listed for hkps.pool.sks-keyservers.net: | ||
| + | $ dig +short hkps.pool.sks-keyservers.net | ||
| + | 209.244.105.201 | ||
| + | 37.191.231.105 | ||
| + | 192.146.137.98 | ||
| + | |||
| + | This is set during compile time via configure.ac: | ||
| + | |||
| + | AC_DEFINE_UNQUOTED(DIRMNGR_DEFAULT_KEYSERVER, | ||
| + | "hkps://hkps.pool.sks-keyservers.net", | ||
| + | [The default keyserver for dirmngr to use, if none is explicitly given]) | ||
==réception de clef via proxy== | ==réception de clef via proxy== | ||
| - | gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --recv-keys 0x059Exxxx | + | gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug '''--search-keys [KEY]''' |
| + | gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] | ||
| + | gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug '''--recv-keys 0x059Exxxx''' | ||
==Commandes GnuPG essentielles== | ==Commandes GnuPG essentielles== | ||
| - | + | ===Gestion du trousseau : uid personnels et clefs publiques de tiers=== | |
Aide, liste des commandes et options | Aide, liste des commandes et options | ||
gpg --help | gpg --help | ||
| Ligne 22 : | Ligne 40 : | ||
Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé. | Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé. | ||
gpg --list-key | gpg --list-key | ||
| + | '''gpg -k''' | ||
| + | Lister les clefs privés. A défaut, un fichier "secring.gpg" vide est créé. | ||
| + | gpg --list-secret-keys | ||
| + | '''gpg -K''' | ||
Gestion des clefs | Gestion des clefs | ||
| - | gpg --edit-key [id] (adduid | trust | save | quit) | + | '''gpg --edit-key [id]''' (adduid | trust | save | quit) |
Rechercher un clefs sur le serveur | Rechercher un clefs sur le serveur | ||
gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] | gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] | ||
| + | gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] | ||
Envoi de clef publique à un serveur de clefs | Envoi de clef publique à un serveur de clefs | ||
gpg --keyserver [pgp.mit.edu] --send-key [uid] | gpg --keyserver [pgp.mit.edu] --send-key [uid] | ||
Récupérer une clef publique sur un serveur de clefs | Récupérer une clef publique sur un serveur de clefs | ||
gpg --keyserver [pgp.mit.edu] --recv-keys [uid] | gpg --keyserver [pgp.mit.edu] --recv-keys [uid] | ||
| - | + | ||
| + | ===Manipulation des clefs=== | ||
Exporter la clef publique dans un fichier | Exporter la clef publique dans un fichier | ||
gpg --export --armor [uid] > [fichier sorti] | gpg --export --armor [uid] > [fichier sorti] | ||
Importer une clef publique depuis un fichier | Importer une clef publique depuis un fichier | ||
| - | gpg --import [fichier lu] | + | '''gpg --import [fichier lu]''' |
| + | Importer une clef privé depuis un fichier | ||
| + | '''gpg --allow-secret-key-import --import [fichier lu]''' | ||
Exporter une clef privée | Exporter une clef privée | ||
gpg --export-secret-key -a > [fichier sorti] | gpg --export-secret-key -a > [fichier sorti] | ||
Importer une clef privée depuis un fichier | Importer une clef privée depuis un fichier | ||
| - | gpg | + | gpg --import --allow-secret-key-import [fichier lu] |
Sortir l'empreinte de la clef publique | Sortir l'empreinte de la clef publique | ||
gpg --fingerprint [uid] > [fichier sorti] | gpg --fingerprint [uid] > [fichier sorti] | ||
| - | + | ||
| + | ===Réseau de confiance=== | ||
Signer la clef publique d'un tiers | Signer la clef publique d'un tiers | ||
gpg --sign-key [uid] | gpg --sign-key [uid] | ||
Lister les signatures | Lister les signatures | ||
| - | gpg --list-sigs | + | '''gpg --list-sigs [uid]''' |
Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a) | Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a) | ||
gpg --check-sigs [uid] | gpg --check-sigs [uid] | ||
| - | *Principales options | + | Garder son tousseau a jour |
| + | '''gpg --refresh-keys''' | ||
| + | # crontab -e | ||
| + | 0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1 | ||
| + | |||
| + | ===Principales options=== | ||
Sortie ASCII (au lieu de binaire) | Sortie ASCII (au lieu de binaire) | ||
--armor ou -a | --armor ou -a | ||
Spécifier le fichier sorti | Spécifier le fichier sorti | ||
--output ou -o [nom_du_fichier] | --output ou -o [nom_du_fichier] | ||
| + | -o- sortie standard | ||
Spécifier l’utilisateur | Spécifier l’utilisateur | ||
| - | --recipient ou -r [nom] | + | '''--recipient ou -r [nom]''' |
Mode verbeux | Mode verbeux | ||
--verbose ou -b | --verbose ou -b | ||
| Ligne 61 : | Ligne 94 : | ||
Confirmation avant écrasement | Confirmation avant écrasement | ||
--interactive ou -i | --interactive ou -i | ||
| - | + | ===Signer un fichier=== | |
| - | Signer un fichier | + | le fichier d'origine est conserver, un nouveau fichier est généré .gpg ou .asc. C'est uniquement ce dernier fichier qu'il faut communiquer. |
| - | + | *Signature (compressée) | |
| + | gpg --sign [-a] [fichier signé] | ||
| + | (--sign ou -s) | ||
| + | Sortie : [fichier].gpg en binaire ou [fichier].asc en ASCII avec -a | ||
| - | + | *Signature (non compressée) | |
| + | gpg --clearsign -a [fichier signé] | ||
| - | + | *Signature détachée (pour les fichiers binaire) | |
| + | gpg -b -a [uid] -o [fichier sorti signature] [fichier à signer] | ||
| + | (--detach-sign ou -b) | ||
| + | Sortie : [fichier sorti signature].sig | ||
| - | + | ===Vérification de signature sur un fichier (avant déchiffrement)=== | |
| + | gpg --verify [fichier signé].gpg | ||
| + | ou | ||
| + | gpg --verify [fichier signé].asc | ||
| + | Vérifier la signature détaché (fichier binaire) | ||
| + | gpg --verify [fichier signature] [fichier signé] | ||
| - | + | ===Chiffrer un fichier (--encrypt ou -e)=== | |
| - | + | gpg -r [uid] -e -a -o [fichier sorti] [fichier lu] | |
| + | Sortie sans l’option -o : [fichier].gpg | ||
| - | + | Chiffrer et signer | |
| + | gpg -s -a -e [fichier lu] | ||
| - | + | ===Déchiffrer un fichier (--decrypt ou -d non nécessaire option par défaut )=== | |
| + | gpg -r [uid] -d -o [fichier sorti] [fichier lu] | ||
| - | + | Cryptage symétrique (pas à l’intention d’un tiers) | |
| + | --symmetric ou -c | ||
| + | gpg -c -a -o [fichier sorti] [fichier lu] | ||
| + | Décryptage symétrique (pas à l’intention d’un tiers) | ||
| + | --decrypt ou -d | ||
| + | gpg -d -o [fichier sorti] [fichier lu] | ||
| - | |||
| - | + | ===maj auto des cles=== | |
| + | *crontab de l'utilisateur | ||
| + | crontab -e | ||
| + | # m h dom mon dow command | ||
| + | 0 12 * * * /usr/bin/gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --refresh-keys > /dev/null 2>&1 | ||
| - | + | ==Interface graphique== | |
| + | *kgpg | ||
| + | kgpg | ||
| + | QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. | ||
| + | QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. | ||
| + | kgpg -k | ||
| - | + | ==best-practices== | |
| + | https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices | ||
| - | + | ==Problème / incohérence== | |
| + | Supprimer le rep ~/.gnupg , recréation vierge , puis réimporter les clefs. | ||
| - | + | ==Astuces== | |
| + | echo "Your secret message" | gpg -ea -r "Recipient name" | mail -s "Subject" recipient@example.com | ||
| - | + | -e Encrypt data to one or more public keys | |
| + | -a Create ASCII armored output | ||
| + | -r Encrypt for user id name | ||
| + | -s Sign a message | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | + | https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices | |
| - | + | ||
| - | + | * display long key by default: | |
| - | + | vim ~/.gnupg/gpg.conf | |
| - | + | and add at the end of file: | |
| - | + | keyid-format 0xlong | |
| + | with-fingerprint | ||
| - | + | *ref | |
| - | + | https://wiki.csnu.org/index.php/GnuPG_:_Cr%C3%A9er_la_paire_de_cl%C3%A9_gpg_parfaite_:_cl%C3%A9_maitre,_subkeys_et_support_smartcard_(yubikey) | |
Version actuelle en date du 9 mars 2020 à 14:50
répertoire « ~/.gnupg » créé nouveau fichier de configuration « ~/.gnupg/gpg.conf » créé le porte-clefs « ~/.gnupg/pubring.gpg » a été créé ~/.gnupg/trustdb.gpg : base de confiance créée
[modifier] Serveur de clés
https://pgp.mit.edu/ http://keys.gnupg.net/ https://pgp.key-server.io/
hkp://p80.pool.sks-keyservers.net:80
- default keys server
The upstream default currently uses the SKS keyservers. The IP you saw is one of those listed for hkps.pool.sks-keyservers.net:
$ dig +short hkps.pool.sks-keyservers.net 209.244.105.201 37.191.231.105 192.146.137.98
This is set during compile time via configure.ac:
AC_DEFINE_UNQUOTED(DIRMNGR_DEFAULT_KEYSERVER,
"hkps://hkps.pool.sks-keyservers.net",
[The default keyserver for dirmngr to use, if none is explicitly given])
[modifier] réception de clef via proxy
gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --recv-keys 0x059Exxxx
[modifier] Commandes GnuPG essentielles
[modifier] Gestion du trousseau : uid personnels et clefs publiques de tiers
Aide, liste des commandes et options
gpg --help
Génération du trousseau
gpg --gen-key
Génère un certificat de révocation
gpg --gen-revoke
Lister les clefs. A défaut, un fichier "pubring.gpg" vide est créé.
gpg --list-key gpg -k
Lister les clefs privés. A défaut, un fichier "secring.gpg" vide est créé.
gpg --list-secret-keys gpg -K
Gestion des clefs
gpg --edit-key [id] (adduid | trust | save | quit)
Rechercher un clefs sur le serveur
gpg --keyserver hkp://pgp.key-server.io:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY] gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --search-keys [KEY]
Envoi de clef publique à un serveur de clefs
gpg --keyserver [pgp.mit.edu] --send-key [uid]
Récupérer une clef publique sur un serveur de clefs
gpg --keyserver [pgp.mit.edu] --recv-keys [uid]
[modifier] Manipulation des clefs
Exporter la clef publique dans un fichier
gpg --export --armor [uid] > [fichier sorti]
Importer une clef publique depuis un fichier
gpg --import [fichier lu]
Importer une clef privé depuis un fichier
gpg --allow-secret-key-import --import [fichier lu]
Exporter une clef privée
gpg --export-secret-key -a > [fichier sorti]
Importer une clef privée depuis un fichier
gpg --import --allow-secret-key-import [fichier lu]
Sortir l'empreinte de la clef publique
gpg --fingerprint [uid] > [fichier sorti]
[modifier] Réseau de confiance
Signer la clef publique d'un tiers
gpg --sign-key [uid]
Lister les signatures
gpg --list-sigs [uid]
Vérifier les signatures (?=on n'a pas la cle publique/!=on l'a)
gpg --check-sigs [uid]
Garder son tousseau a jour
gpg --refresh-keys # crontab -e 0 12 * * * /usr/bin/gpg --refresh-keys > /dev/null 2>&1
[modifier] Principales options
Sortie ASCII (au lieu de binaire)
--armor ou -a
Spécifier le fichier sorti
--output ou -o [nom_du_fichier] -o- sortie standard
Spécifier l’utilisateur
--recipient ou -r [nom]
Mode verbeux
--verbose ou -b
Mode silencieux
--quiet ou -q
Confirmation avant écrasement
--interactive ou -i
[modifier] Signer un fichier
le fichier d'origine est conserver, un nouveau fichier est généré .gpg ou .asc. C'est uniquement ce dernier fichier qu'il faut communiquer.
- Signature (compressée)
gpg --sign [-a] [fichier signé] (--sign ou -s) Sortie : [fichier].gpg en binaire ou [fichier].asc en ASCII avec -a
- Signature (non compressée)
gpg --clearsign -a [fichier signé]
- Signature détachée (pour les fichiers binaire)
gpg -b -a [uid] -o [fichier sorti signature] [fichier à signer] (--detach-sign ou -b) Sortie : [fichier sorti signature].sig
[modifier] Vérification de signature sur un fichier (avant déchiffrement)
gpg --verify [fichier signé].gpg ou gpg --verify [fichier signé].asc
Vérifier la signature détaché (fichier binaire)
gpg --verify [fichier signature] [fichier signé]
[modifier] Chiffrer un fichier (--encrypt ou -e)
gpg -r [uid] -e -a -o [fichier sorti] [fichier lu] Sortie sans l’option -o : [fichier].gpg
Chiffrer et signer
gpg -s -a -e [fichier lu]
[modifier] Déchiffrer un fichier (--decrypt ou -d non nécessaire option par défaut )
gpg -r [uid] -d -o [fichier sorti] [fichier lu]
Cryptage symétrique (pas à l’intention d’un tiers)
--symmetric ou -c gpg -c -a -o [fichier sorti] [fichier lu]
Décryptage symétrique (pas à l’intention d’un tiers)
--decrypt ou -d gpg -d -o [fichier sorti] [fichier lu]
[modifier] maj auto des cles
- crontab de l'utilisateur
crontab -e # m h dom mon dow command 0 12 * * * /usr/bin/gpg --keyserver hkp://pgp.mit.edu:80 --keyserver-options http-proxy=http://172.21.xxx.xxx:8080,debug --refresh-keys > /dev/null 2>&1
[modifier] Interface graphique
- kgpg
kgpg QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave. kgpg -k
[modifier] best-practices
https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices
[modifier] Problème / incohérence
Supprimer le rep ~/.gnupg , recréation vierge , puis réimporter les clefs.
[modifier] Astuces
echo "Your secret message" | gpg -ea -r "Recipient name" | mail -s "Subject" recipient@example.com
-e Encrypt data to one or more public keys -a Create ASCII armored output -r Encrypt for user id name -s Sign a message
https://riseup.net/fr/security/message-security/openpgp/gpg-best-practices
- display long key by default:
vim ~/.gnupg/gpg.conf and add at the end of file: keyid-format 0xlong with-fingerprint
- ref