Enigmail 不要求提供 pgp 密码,而是说没有可用的密钥

Bro*_*onk 8 thunderbird enigmail decryption

在 Thunderbird 中使用 enigmail 解密电子邮件不再有效。这是因为我没有机会输入我的密码,以前会弹出一个要求我这样做的表格,现在不是,我收到了这条消息:

错误 - 找不到匹配的私钥/秘密密钥来解密消息;单击“详细信息”按钮以获取更多信息

私钥是可用的,因为

gpg -d Desktop/mail.eml     
Run Code Online (Sandbox Code Playgroud)

使表格出现。填写密码后,我可以在终端内阅读解密后的邮件。

当我今天创建新密钥时,出现了另一个密码短语问题的提示。我无法创建吊销证书,因为没有设置密码。这又不是真的。

我第一次注意到这个问题是在 8 月 31 日星期一。

我查了一下互联网,然后做了以下事情:

  1. 确保 gpg-agent 的实例正在运行:

    gpg-agent -v
    
    Run Code Online (Sandbox Code Playgroud)

    返回

    gpg-agent: gpg-agent running and available
    
    Run Code Online (Sandbox Code Playgroud)

    .gnupg/gpg-agent.conf 的内容:

    默认缓存 ttl 0
    最大缓存 ttl 0

  2. 转到dconf Editor desktop->gnome->crypto->cache并设置gpg-cache-ttl0

  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
    
    Run Code Online (Sandbox Code Playgroud)
  5. Seahorse->GnuPG keys 删除所有密钥并重新导入它们

该列表对问题没有任何影响。我想知道,如何让 Enigmail 再次询问我的密码?

提前致谢!
布朗克

编辑

  1. 删除/etc/xdg/autostart/gnome-keyring-gpg.desktop没有任何作用。
  2. 删除seahorse没有任何作用。
  3. 使用decrypt-file

    Couldn't decrypt file: mail.eml.pgp
    Bad passphrase
    
    Run Code Online (Sandbox Code Playgroud)

use*_*453 7

试试这个:https : //www.enigmail.net/support/gnupg2_issues.php 就我而言,我需要安装 pinentry 的图形版本(pinentry-qt4 包)。

“解决 GnuPG 2.x 和 gpg-agent 的问题

注意 GnuPG 2.x 需要一个“代理”来处理密码。默认情况下,这是由 gpg-agent 完成的,但还有其他工具实现了其功能的一个子集。这些说明仅适用于 gpg-agent。如果您使用 gnome-keyring、seahorse-agent 或 KDE 钱包管理器等代理,则这些说明不适用。最常见的问题

症状

最常见的问题是 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
Run Code Online (Sandbox Code Playgroud)

如何分析

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.
Run Code Online (Sandbox Code Playgroud)

如何修复

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."
Run Code Online (Sandbox Code Playgroud)


小智 1

我遇到了同样的问题,但发现杀死 gpg-agent 是一个解决方法。

(从源代码中我发现您可以通过编辑 ~/.thunderbird 下某处的“defaults/preferences/enigmail.js”文件来启用 enigmail 日志记录,将“extensions.enigmail.logDirectory”属性设置为“/tmp”。日志文件“/tmp/enigdbug.txt”然后显示 enigmail 正在运行的完整 gpg 命令,以“--use-agent”结尾。我从命令行运行该 gpg 命令,向其提供加密的电子邮件消息。它抱怨错误消息“gpg:代理出现问题:没有 PINentry”。谷歌搜索该错误消息后发现了终止 gpg-agent 的建议。同时,NSA 高兴地表示 PKI 加密的用户体验非常好。太垃圾了。)