Не мог генерировать необслуживаемые ключи OpenPGP с GnuPG

Я пытаюсь генерировать необслуживаемые ключи OpenPGP без пароля для автоматического развертывания безопасных файлов на серверах.

При ручной генерации все идет прекрасное (использование gpg --no-permission-warning --homedir . --gen-key 2>&1), но в пакетном режиме, ничто, кажется, не создается.

Вот сценарий тестирования:

#!/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 .

И результат:

-- 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

Я главным образом следовал этой документации относительно необслуживаемой генерации ключей, которая связана с версией 2 gpg.

Я пропускаю что-то специальное о версии 1? Это связано с энтропийным поколением? Я иду не так, как надо где-нибудь?

--

Таким образом, вот рабочий сценарий с использованием --secret-keyring и --keyring флаги:

#!/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
задан 24 October 2015 в 12:56

1 ответ

Смотря на список файлов, проблема на самом деле кажется несколько очевидной: pubring.gpg и secring.gpg путь слишком маленькие (хорошо, пустой).

Рассмотрение причины, почему, производя ключи, Вы определили userserver.pub соответственно userserver.sec как цели, в то время как экспортные пробеги команды, используя местоположения по умолчанию pubring.gpg и secring.gpg.

Любой удаляет те линии в параметрах поколения:

%pubring userserver.pub
%secring userserver.sec

или пробег экспорт (и список ключа, конечно) с дополнительными параметрами --keyring userserver.pub --secret-keyring userserver.sec.

1
ответ дан 7 December 2019 в 16:07

Другие вопросы по тегам:

Похожие вопросы: