J'ai trouvé dans la méthode https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html#Unattended-GPG-key-generation pour générer des clés gpg sans interaction avec l'utilisateur, mais ce n'est pas le cas semblent fonctionner.
Mon script est:
#!/usr/bin/env bash
rm -rf .gnupg
mkdir -m 0700 .gnupg
touch .gnupg/gpg.conf
chmod 600 .gnupg/gpg.conf
tail -n +4 /usr/share/gnupg2/gpg-conf.skel > .gnupg/gpg.conf
touch .gnupg/{pub,sec}ring.gpg
cat >.gnupg/foo <<EOF
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: User 1
Name-Comment: User 1
Name-Email: [email protected]
Expire-Date: 0
Passphrase: kljfhslfjkhsaljkhsdflgjkhsd
%pubring foo.pub
%secring foo.sec
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
EOF
gpg2 --verbose --batch --gen-key .gnupg/foo
Quand je l'exécute, cela montre:
=$ ./gen.keys.sh
gpg: Generating a basic OpenPGP key
gpg: no running gpg-agent - starting one
gpg: writing public key to `foo.pub'
gpg: writing secret key to `foo.sec'
Mais alors ça se bloque.
Lorsque je vérifie, en attendant, l'arborescence ps pour cet utilisateur, je vois:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tstpg 22603 0.0 0.0 24108 5688 pts/9 Ss 14:59 0:00 -bash
tstpg 22624 0.0 0.0 13688 3168 pts/9 S+ 14:59 0:00 \_ bash ./gen.keys.sh
tstpg 22632 0.2 0.0 27428 3676 pts/9 SL+ 14:59 0:00 \_ gpg2 --verbose --batch --gen-key .gnupg/foo
tstpg 22634 0.3 0.0 18072 2884 pts/9 SL+ 14:59 0:00 \_ gpg-agent --server
Dans ~ / .gnupg / gpg.conf, il n'est pas fait mention d'agent, et je n'ai aucune idée de ce qu'il essaie de faire.
Les fichiers foo.pub/foo.sec sont générés dans le répertoire home, mais sont vides.
Qu'est-ce que je rate? Comment générer la clé sans aucune sorte d'interaction utilisateur?
Versions:
- gpg (GnuPG) 2.0.26
- libgcrypt 1.6.2
/dev/random
(et donc des nombres hautement imprévisibles de/dev/urandom
presque tout le temps), parce que j'ai un périphérique matériel qui utilise un tunnel quantique pour générer une entropie physiquement attachée à mon serveur (voir au dessus).J'ai trouvé qu'il y a quelques changements simples qui font fonctionner votre script. J'ai également inclus quelques tests afin qu'une fois la clé créée, elle sera automatiquement testée.
J'ai également supprimé le mot de passe afin que les tests clés puissent être automatisés.
la source
A travaillé cela dans le cadre de la génération de clés pour une installation d'application automatisée. L'installation et le démarrage du package ' rngd ' pour générer entroy résoudra votre problème. simple à installer et à utiliser.
Voici le code .
/dev/hwrandom
par défaut, mais modifiable) pour fournir une source d'entropiela source
urandom
est utilisé comme source, ce qui est déconseillé. wiki.archlinux.org/index.php/Rng-toolsWarning: Some tutorials available in the Internet, and even early versions of rng-tools package, recommend the following line for systems without TRGN: RNGD_OPTS="-o /dev/random -r /dev/urandom" Of course, this is a really bad idea, since you are simple filling the kernel entropy pool with entropy coming from the kernel itself! If your system does not have an available TRGN consider using haveged instead. See FS#34580 for details.
/dev/hwrandom
par défaut et est modifiable. Voir la page de manuel.urandom
et que cela est déconseillé.En voici un que vous pourriez utiliser mais je recommanderais d'exécuter ce script dans un nouveau terminal afin de ne pas affecter votre actuel. Ce script continuera de générer l'entropie en gardant la machine occupée et coincée dans une boucle infinie jusqu'à ce qu'un utilisateur quitte le script. Aucune interaction utilisateur n'est nécessaire avant la génération de clés. Tout ce que le script fait est de répertorier les fichiers pour toujours.
Cela peut prendre quelques minutes (parfois 10+) à générer en fonction de votre machine et de la taille de la clé, mais il est agréable de ne pas avoir à interagir avec.
la source