Enigmail не запрашивает пароль pgp, но говорит, что ключ недоступен

8

Расшифровка писем с помощью enigmail в Thunderbird больше не работает. Это потому, что у меня нет возможности ввести фразу-пароль, форма, которая просила меня сделать это, всплывала, теперь это не так, и я получаю это сообщение:

Ошибка - не найден соответствующий закрытый / секретный ключ для расшифровки сообщения; нажмите на кнопку «Подробнее» для получения дополнительной информации

Закрытый ключ доступен, хотя, так как

gpg -d Desktop/mail.eml     

заставляет форму появиться После заполнения моей парольной фразы я могу читать расшифрованную почту в терминале.

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

Впервые я заметил проблему в понедельник, 31 августа.

Я немного проверил интернет, а затем сделал следующее:

  1. Убедитесь, что экземпляр gpg-agent запущен:

    gpg-agent -v
    

    возвращается

    gpg-agent: gpg-agent running and available
    

    Содержание .gnupg / gpg-agent.conf:

    default-cache-ttl 0
    max-cache-ttl 0

  2. Перейти к dconf Editor desktop->gnome->crypto->cacheи установить gpg-cache-ttlв0

  3. Thunderbird Enigmail->Clear Saved Passphrases выдает Enigmail Alert высказывание:

    Вы используете gpg-agent для обработки парольной фразы. Поэтому очистка парольной фразы невозможна из Enigmail.

    Thunderbird Enigmail->Preferences->Basic Remember passphrase for 0 minutes of idle time

  4. Заставь gpg-agentзабыть мою фразу:

    pkill -SIGHUP gpg-agent
    
  5. Seahorse->GnuPG keys удалите все ключи и импортируйте их

Ни один из этого списка не имел никакого значения для проблемы. Интересно, как мне заставить Enigmail снова запросить мою пароль?

Заранее спасибо!
Bronk

редактировать

  1. Удаление /etc/xdg/autostart/gnome-keyring-gpg.desktopничего не сделало.
  2. Удаление seahorseничего не сделало.
  3. Использование decrypt-file:

    Couldn't decrypt file: mail.eml.pgp
    Bad passphrase
    
Bronk
источник
Установите pinentry-gtk2на Ubuntu с Unity
Natim
У меня тоже есть эта проблема, но, как ни странно, я могу подписывать свои собственные электронные письма, но она выдает то же самое сообщение, когда я пытаюсь расшифровать сообщения, подписанные моим pubkey.
Джеремия

Ответы:

7

Попробуйте это: https://www.enigmail.net/support/gnupg2_issues.php В моем случае мне нужно установить графическую версию pinentry (пакет pinentry-qt4).

«Решение проблем с GnuPG 2.x и gpg-agent

Примечание. GnuPG 2.x требуется «агент» для обработки парольных фраз. По умолчанию это делает gpg-agent, но есть и другие инструменты, которые реализуют часть его функций. Эти инструкции предназначены только для gpg-агента. Если вы используете такой агент, как gnome-keyring, seahorse-agent или KDE Wallet Manager, то эти инструкции не применяются. Наиболее распространенная проблема

симптомы

Наиболее распространенная проблема заключается в том, что gpg-agent (часть GnuPG) не может запустить pinentry (инструмент, используемый для запроса вашей парольной фразы). Enigmail будет отображать сообщения вроде:

when reading messages:
Error - no matching private/secret key found to decrypt message; click on 'Details' button for more information

when sending messages:
- Send operation aborted. Error - encryption command failed
- Send operation aborted. Key 0x....... not found or not valid. The (sub-)key might have expired

Как анализировать

Try sending a signed and unencrypted message to yourself.
Check the output in the Enimgail log: go to menu Enigmail > Debugging Options > View Log.
Search for the following text: parseErrorOutput: status message. You will probably find this message several times. Check what follows below.
If the message says something like "no pinentry", "problem with the agent", "Invalid IPC response" or "problem with gpg-agent", then there is something wrong with your gpg-agent and/or pinentry setup.

Как это исправить

Execute the following script from a terminal to find out if a graphical version of pinentry is used:

pinentry <<EOT
SETDESC Hello World
CONFIRM
EOT

You should get a graphical window with a confirmation message "Hello World". If a "window" is opened within your terminal window then pinentry is text-based, which does not work with Enigmail. To fix this, ensure that a graphical version of pinentry is installed. On Linux/Unix systems, these would typically be pinentry-qt/pinentry-qt4 or pinentry-gtk/pinentry-gtk2, and on Mac OS X pinentry-mac. Rename the existing pinentry file to "pinentry-text" or similar, and create a symlink from pinentry-qt, pinentry-qt4, pinentry-gtk, pinentry-gtk2 or pinentry-mac to pinentry. Then restart your PC.

If the above does not help, check the contents of $HOME/.gnupg/gpg-agent.conf. Make sure that there is a configuration entry pinentry-program containing the full path to a graphical version of pinentry as above. E.g.:

pinentry-program /usr/local/bin/pinentry-gtk

Then save the file and restart your PC.

If you still can't access your key, then execute the following script from a terminal:

gpg-connect-agent <<EOT
GETINFO version
EOT

The output should be something like the text below, where 2.0.26 represents the agent version number. The version number should match your gpg version number:

D 2.0.26
OK

If you get an error message like "ERR 280 not implemented" then you don't use gpg-agent, but one of the alternatives like gnome-keyring. We recommend you switch to gpg-agent by disabling your current agent. See e.g. askubuntu for how to disable gnome-keyring or how to disable KDE wallet.

If you get a useful result from above, then execute the following script from a terminal:

gpg-connect-agent <<EOT
GET_CONFIRMATION Hello
EOT

Pinentry should now open as a graphical window (just like above), with the difference to the step above that this instance of pinentry was launched from gpg-agent. If this is successful, then GnuPG 2 should work correctly in Enigmail.

If gpg-agent still cannot launch pinentry from Enigmail, then you need to start debugging gpg-agent. Execute the following commands from a terminal:

killall gpg-agent
gpg-agent --debug-level expert --use-standard-socket --daemon /bin/sh

This will start gpg-agent from the command line, open a new shell and print the debug output to that shell. If the command succeeded, you will see somehting like:
gpg-agent[76979]: gpg-agent 2.0.26 started
Leave the terminal window untouched, start Thunderbird and try to use Enigmail. As you'll try to access gpg-agent, you will see the output in your terminal window. If gpg-agent cannot start pinentry successfully, you will see something like this:

gpg-agent[76993]: starting a new PIN Entry
gpg-agent[76993]: chan_19 <- ERR 67109133 can't exec `/usr/bin/pinentry': No such file or directory
gpg-agent[76993]: chan_19 -> BYE
gpg-agent[76993]: can't connect to the PIN entry module: IPC connect call failed
gpg-agent[76993]: command get_passphrase failed: No pinentry

Press Ctrl+D in the terminal to end the debugging session. The bold line should tell you the reason for the error (in the example above, pinentry cannot be found). Try to fix the error and repeat the test."
user462453
источник
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Карл Рихтер
Последний бит говорит: «Если gpg-agent по-прежнему не может запустить pinentry из Enigmail, тогда ...» - но если IF pinentry запущен правильно, но дешифрование по-прежнему не работает, руководство здесь не поможет ...
nerdoc
1

У меня была та же проблема, но я обнаружил, что убийство gpg-agent - это обходной путь.

(Из исходного кода я обнаружил, что вы можете включить ведение журнала enigmail, отредактировав файл «defaults / предпочтения / enigmail.js» где-то в ~ / .thunderbird, установив для свойства «extensions.enigmail.logDirectory» значение «/ tmp». Затем в файле журнала "/tmp/enigdbug.txt" была показана полная команда gpg, которая выполнялась enigmail, заканчивающаяся на "--use-agent". Я запустил эту команду gpg из командной строки, передав ей зашифрованное сообщение электронной почты. пожаловался на сообщение об ошибке "gpg: проблема с агентом: нет PINentry". Поиск этого сообщения об ошибке вызвал предложение убить gpg-agent. Между тем, АНБ в радости потирает руки, что пользовательский опыт шифрования PKI так ерунда.)

Graeme
источник
У меня та же проблема, что и у ОП. И наоборот, выполнение точной команды, найденной в enigdbug.txt, дает идеальные результаты. : \
Джоэл Кросс
Не помогло здесь. Хотя, gpg -d message.emlта же проблема: gpg: public key decryption failed: No passphrase given- не спрашивая у меня парольную фразу
nerdoc
1

У меня была аналогичная проблема. Thunderbird снова и снова просил ввести пароль моего ключа, и брелок Gnome его не запомнил, хотя я просил об этом. Проблема состояла в том, что gpg-agentэто не было запущено в моем сеансе. Проблема исчезла, когда я вручную запустил ее в текущем сеансе с:

gpg-agent --debug-level expert --use-standard-socket --daemon /bin/sh

Для окончательного решения проблемы вы должны убедиться, что агент работает в вашем сеансе: 1. Убедитесь, что у вас есть следующий файл /etc/X11/Xsession.d/90gpg-agent. Моя выглядит так:

  : ${GNUPGHOME=$HOME/.gnupg}

  GPGAGENT=/usr/bin/gpg-agent
  PID_FILE="$GNUPGHOME/gpg-agent-info-$(hostname)"

  if grep -qs '^[[:space:]]*use-agent' "$GNUPGHOME/gpg.conf" "$GNUPGHOME/options" &&
     test -x $GPGAGENT &&
     { test -z "$GPG_AGENT_INFO" || ! $GPGAGENT 2>/dev/null; }; then

     if [ -r "$PID_FILE" ]; then
         . "$PID_FILE"
     fi

     # Invoking gpg-agent with no arguments exits successfully if the agent
     # is already running as pointed by $GPG_AGENT_INFO
     if ! $GPGAGENT 2>/dev/null; then
         STARTUP="$GPGAGENT --daemon --sh --write-env-file=$PID_FILE $STARTUP"
     fi
  fi
  1. Проверьте, есть ли у вас файл ~/.gnupg/gpg.conf, по крайней мере, со следующей строкой:

    use-agent
    

Если нет, вы можете добавить его с помощью следующей команды:

echo "use-agent" >>  ~/.gnupg/gpg.conf 
user5950
источник
use-agentбольше не требуется в OpenGPG 2.1 - агент используется в любом случае.
nerdoc
0

Получили ту же ошибку об ошибке в Пентри. В конце я понял, что gpg-agent использует неправильный пинентри. Решил это, установив правильный пинентри, отредактировав ~ / .gnupg / gpg-agent.conf и добавив следующую строку

pinentry-program /usr/bin/pinentry-gtk-2

По умолчанию для системы, над которой я работаю, был pinentry-x11 (это установка для всей компании, которая позволяет использовать различные оконные менеджеры), которая не работала для gnome3. - Таким образом, нужно убедиться, что gpg-agent использует правильный pinentry для фактического используемого оконного менеджера.

Карстен Кениг
источник
0

В моем случае просто не было никаких pinentryинструментов, кроме pinentry-curses(командная строка с поддержкой указателей). Поэтому в Fedora установите любой из этих диалогов ввода пароля / PIN-кода:

  • pinentry-qt.x86_64 основан на Qt4;
  • pinentry-gtk.x86_64 на основе GTK +;
  • pinentry-emacs.x86_64 для Emacs;
  • pinentry-gnome3.x86_64 для GNOME 3.

Я использовал pinentryпакет GNOME 3 .

Дэвид
источник
0

В Thunderbird выберите сообщение, нажмите на гамбургер, раскройте меню Enigmail и выберите «Расшифровать / проверить». Вы получите запрос пароля, после чего сообщение будет расшифровано.

Мистер не так
источник
Не имеет значения ...
nerdoc
Вы можете уточнить? Вы не получаете запрос пароля или сообщение не расшифровано?
Мистер Неправильно,
0

У меня была аналогичная проблема! После отладки gpg-agent, выполненной с:

gpg-agent --debug-level expert --use-standard-socket --daemon /bin/sh

Я обнаружил, что между enigmail и gpg что-то сломалось, и он никогда не спрашивал пароль. Но в случае, когда пароль был предварительно загружен, все работало отлично.

В моем случае проблема в том, что в прошлом я принудительно использовал параметр follow в ~ / .gnupg / gpg.conf

pinentry-mode loopback

Это сломало процесс. Вы можете проверить команду enigmail, которая включает экспертный режим в Enigmail, а затем в «Параметры отладки -> Просмотр консоли»

Прокомментировал и все заработало.

Alex
источник