Conserver les informations d'identification GnuPG en mémoire cache pour toute la session utilisateur

53

GnuPG peut, avec gpg-agent, mettre en cache l’accès à une clé privée. Comment puis-je garder ce cache actif pour toute la session utilisateur ?

Lorsque je déverrouille la clé gpg-agent, elle ne reste en cache que pendant un temps limité. Avec l'agent SSH, je saisis la phrase secrète une fois et celle-ci reste en cache pendant toute la session. Je veux le même comportement de gpg-agent.

Donc, ssh-agentne souffre pas d'une durée de vie limitée du cache. Mais gpg-agentlimite la durée de vie du cache, au moins par défaut. Comment puis-je éliminer la limite de temps de cachegpg-agent ?

gros nez
la source

Réponses:

69

Jusqu'à GnuPG 2

La configuration utilisateur (in ~/.gnupg/gpg-agent.conf) peut uniquement définir la durée de mise en cache par défaut et maximale; il ne peut pas être désactivé.

L' default-cache-ttloption définit le délai d'attente (en secondes) après la dernière activité de GnuPG (afin qu'il se réinitialise si vous l'utilisez), l' maximum-cache-ttloption définit la durée (en secondes) qu'il met en cache après la saisie de votre mot de passe. La valeur par défaut est 600 secondes (10 minutes) pour default-cache-ttlet 7200 secondes (2 heures) pour maximum-cache-ttl.

Définissez-le à environ un an - disons, 34560000 secondes (400 jours) - et ça devrait aller:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Mais pour que cette modification prenne effet, vous devez terminer la session en redémarrant gpg-agent.

Si vous souhaitez limiter la durée de votre session, vous devez tuer le démon lors de la déconnexion. Ceci est très différent entre les systèmes d'exploitation, je me réfère donc à une autre question / réponse contenant des astuces pour différents systèmes .

Vous pouvez également redémarrer le serveur gpg-agentlors de la connexion, mais cela ne limite pas la durée de la mise en cache à la durée de la session, mais les connexions d'un utilisateur. Décidez vous-même s'il s'agit d'un problème dans votre cas.

GnuPG 2.1 et supérieur

Dans GnuPG 2.1 et supérieur, l’ maximum-cache-ttloption a été renommée max-cache-ttlsans autre changement.

Jens Erat
la source
Est-ce une réponse «vous ne pouvez pas faire ce que vous demandez»? Ce n'est pas clair, car vous parlez de limiter la durée de la session ou de limiter la durée de la mise en cache. Je veux exactement le contraire de cela: pas de limite arbitraire sur le temps de cache ou la durée de la session.
Bignose
En quelque sorte, vous ne pouvez contourner ce problème qu'en définissant un ttl plutôt énorme. Définissez-le à environ un an et vous devriez aller bien - mais vous devez mettre fin à la session en redémarrant gpg-agent.
Jens Erat
Veuillez noter que dans les dernières versions (au moins gnupg 2.1), l’ maximum-cache-ttloption n’existe pas. Pour voir les options correctes, voir la documentation officielle: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.
3
Au moins dans GnuPG 2.1, la valeur par défaut default-cache-ttlest 600 secondes (10 minutes) et non deux heures.
Jlh
@jlh En regardant les pages de manuel pour différentes versions de gpg-agent, la valeur correcte semble être 10 minutes pour toutes les versions. J'ai édité la réponse, merci de l'avoir signalé.
Jens Erat
7

Pour les fenêtres

Le fichier que vous devez modifier doit être placé à: $env:AppData\gnupg

Si vous l'exécutez dans une fenêtre PowerShell, il s'ouvre: C:\Users\<UserName>\AppData\Roaming\gnupg

Il suffit de mettre le gpg-agent.conffichier là-bas avec les valeurs de votre choix.

Vous pouvez le vérifier en exécutant:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Vous pouvez également utiliser ce liner: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"

CubanX
la source
Si une deuxième réponse ne convient pas, nous pouvons déplacer cette question vers sa propre question, étiquetée avec Windows. Pas sûr de ce qui est bien :)
CubanX
Merci et conservez-le ici. C'est bien d'avoir toutes les informations au même endroit. 👍
barfuin
5

Assurez-vous de recharger votre agent gpg gpg-connect-agent reloadagent /byeaprès avoir modifié la configuration.

SuperSandro2000
la source