Question Impossible de générer des clés OpenPGP sans assistance avec GnuPG


J'essaie de générer des clés OpenPGP sans assistance sans phrase secrète pour déployer automatiquement des fichiers sécurisés sur des serveurs.

Lorsque généré manuellement tout va bien (en utilisant gpg --no-permission-warning --homedir . --gen-key 2>&1), mais en mode batch, rien ne semble être créé.

Voici le script de test:

#!/bin/bash
echo '-- Generating entropy'
sudo dd if=/dev/sda of=/dev/null &
TASK_PID=$!

#GPG Key parameters
cat > gpgparams <<EOF
%echo Generating a basic OpenPGP key
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: User Name
Name-Email: user@server
Expire-Date: 0
%pubring userserver.pub
%secring userserver.sec
%commit
%echo done
EOF

echo '-- Generating keys'
gpg --no-permission-warning --homedir . --batch --gen-key gpgparams 2>&1
echo "Result: $?"
echo "Files:"
ls -al

echo && echo '-- Killing entropy generator'
sudo kill $TASK_PID

echo && echo '-- Listing keys'
gpg --homedir . --list-keys

echo && echo '-- exporting public key'
gpg --homedir . --export -a user@server > pubkey.txt 2>&1
echo "Files:"
ls -al
echo "Content of public key:"
cat pubkey.txt

echo && echo '-- Printing versions'
echo '> Ubuntu version'
lsb_release -d
echo '> GPG version'
gpg --version --homedir .

Et le résultat:

-- Generating entropy
-- Generating keys
gpg: keyring `./secring.gpg' created
gpg: keyring `./pubring.gpg' created
gpg: Generating a basic OpenPGP key
........+++++
...............+++++
..+++++
...+++++
gpg: done
Result: 0
Files:
total 28
drwx------ 2 user user 4096 Oct 24 11:12 .
drwxrwxr-x 9 user user 4096 Oct 23 23:11 ..
-rw-rw-r-- 1 user user  232 Oct 24 11:11 gpgparams
-rw------- 1 user user    0 Oct 24 11:11 pubring.gpg
-rw------- 1 user user  600 Oct 24 11:12 random_seed
-rw------- 1 user user    0 Oct 24 11:11 secring.gpg
-rwxrwxr-x 1 user user  918 Oct 24 11:11 testScript.sh
-rw-rw-r-- 1 user user 1461 Oct 24 11:12 userserver.pub
-rw------- 1 user user 2763 Oct 24 11:12 userserver.sec

-- Killing entropy generator

-- Listing keys
gpg: ./trustdb.gpg: trustdb created

-- exporting public key
Files:
total 36
drwx------ 2 user user 4096 Oct 24 11:12 .
drwxrwxr-x 9 user user 4096 Oct 23 23:11 ..
-rw-rw-r-- 1 user user  232 Oct 24 11:11 gpgparams
-rw-rw-r-- 1 user user   31 Oct 24 11:12 pubkey.txt
-rw------- 1 user user    0 Oct 24 11:11 pubring.gpg
-rw------- 1 user user  600 Oct 24 11:12 random_seed
-rw------- 1 user user    0 Oct 24 11:11 secring.gpg
-rwxrwxr-x 1 user user  918 Oct 24 11:11 testScript.sh
-rw------- 1 user user   40 Oct 24 11:12 trustdb.gpg
-rw-rw-r-- 1 user user 1461 Oct 24 11:12 userserver.pub
-rw------- 1 user user 2763 Oct 24 11:12 userserver.sec
Content of public key:
gpg: WARNING: nothing exported

-- Printing versions
> Ubuntu version
Description:    Ubuntu 15.04
> GPG version
gpg (GnuPG) 1.4.18
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: .
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

J'ai principalement suivi cette documentation sur la génération de clés sans surveillance, qui est liée à la version 2 de gpg.

Est-ce que je manque quelque chose de spécial à propos de la version 1? Est-ce lié à la génération d'entropie? Est-ce que je me trompe quelque part?

-

Donc, voici le script de travail avec l'utilisation de --secret-keyring et --keyring drapeaux:

#!/bin/bash
echo '-- Generating entropy'
sudo dd if=/dev/sda of=/dev/null &
TASK_PID=$!

#GPG Key parameters
cat > gpgparams <<EOF
Key-Type: RSA
Key-Length: 2048
Key-Usage: encrypt
Subkey-Type: RSA
Subkey-Length: 2048
Subkey-Usage: encrypt
Name-Real: User Name
Name-Comment: none
Name-Email: user@server
Expire-Date: 0
%pubring userserver.pub
%secring userserver.sec
%commit
%echo done
EOF

echo '-- Generating keys'
gpg --no-tty --no-permission-warning --homedir . --batch --gen-key gpgparams 2>&1
echo "Result: $?"
echo "Files:"
ls -al

echo && echo '-- Killing entropy generator'
sudo kill $TASK_PID

echo && echo '-- Listing keys'
gpg --homedir . --no-default-keyring --secret-keyring ./userserver.sec --keyring ./userserver.pub --list-secret-keys

echo && echo '-- exporting public key'
gpg --homedir . --no-default-keyring --secret-keyring ./userserver.sec --keyring ./userserver.pub --export -a user@server > pubkey.txt 2>&1
echo "Files:"
ls -al
echo "Content of public key:"
cat pubkey.txt

1
2017-10-23 22:01


origine


Êtes-vous sûr d'avoir couru exactement ça scénario? Les séquences d'échappement de nouvelle ligne n'auraient jamais dû être converties en nouvelles lignes entre guillemets simples. Sinon, cela fonctionne pour moi (sous GnuPG 1). Souhaitez-vous ajouter la sortie d'un ls -la . ? - Jens Erat
Les fichiers existent mais il n'y a pas de clé à l'intérieur. - aklmie
Merci de mettre en lumière le problème des nouvelles lignes. En fait, mon shell principal est ZSH et lors de l'ajustement de mon script pour un format correct dans cet article, je pense que j'ai mis des espaces avant le commentaire de la première ligne. Ainsi, en utilisant ZSH ... Cependant, le problème principal reste le même. Je mettrai à jour mon message avec les informations demandées. - aklmie


Réponses:


En regardant la liste des fichiers, le problème semble en fait quelque peu évident: pubring.gpg et secring.gpg sont façon trop petit (bien, vide).

En regardant la raison pour laquelle, lors de la génération des clés, vous avez spécifié userserver.pub respectivement userserver.sec en tant que cibles, tandis que la commande d'exportation s'exécute en utilisant les emplacements par défautpubring.gpg et secring.gpg.

Supprimez ces lignes dans les paramètres de génération:

%pubring userserver.pub
%secring userserver.sec

ou exécuter l'exportation (et la liste des clés, bien sûr) avec des paramètres supplémentaires --keyring userserver.pub --secret-keyring userserver.sec.


1
2017-10-24 09:38



Vous avez raison, vous venez de me précéder un peu ... Comme je l'ai trouvé dans le Documentation. Et c'était aussi dans la documentation v2 liée à la question d'origine. (RTFM! Jusqu'à la fin !! :)) Merci. - aklmie