Estou usando o enigmail há mais de um ano sem problemas e hoje não funciona.
Encontrei o seguinte fato interessante:
gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails
Então, algo está quebrado com a versão 2 do gpg na minha máquina.
Isso me levou a ver que:
gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!)
Essa parece ser a raiz do problema ... é claro gpg2
que não é possível encontrar a chave secreta porque ela está procurando no arquivo errado.
Como pode minha gpg2
falha quando meus gpg
trabalhos funcionam bem? Não vejo nenhuma opção para especificar de onde as chaves secretas são lidas.
Alguém tem alguma ideia?
Resposta a @grawity :
Obrigado, agradeço a sua ajuda. Eu corri strace
e vejo o que você está falando.
No entanto, mesmo depois gpg2 --import ...
que não vejo diferença no comportamento. Só consigo funcionar se eu reiniciar (sem iniciar o gpg-agent), executar gpg2 --import ...
e executar gpg2 --decrypt ...
. Após essa sequência, o thunderbird + enigmail também se comporta bem. No entanto, após 15 minutos ou mais (meu palpite é que a senha que eu digitei para descriptografar expirou), gpg-agent
retornamos ao seu antigo comportamento. Esta sequência é repetível.
Então, aqui estão alguns resultados, se isso ajudar a esclarecer alguma coisa:
saída de gpg2 -K
:
/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec rsa4096/AAAAAAAA <date> [SC]
uid [ultimate] <description of me>
ssb rsa4096/BBBBBBBB <date> [E]
saída de gpg-connect-agent
> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK
saída de gpg2 -v -r <my email> -e testfile
gpg: using PGP trust model
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: This key belongs to us
gpg: reading from 'testfile'
gpg: writing to 'testfile.gpg'
gpg: RSA/AES256 encrypted for: "BBBBBBBB <description of me>"
saída de gpg2 -v -d testfile.gpg
gpg: public key is BBBBBBBB
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: encrypted with 4096-bit RSA key, ID BBBBBBBB, created <date>
"<description of me>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key
fonte
gpg-agent
e o programa de pinentry precisavam ser definidos comopinentry-gtk-2
. Antes de ser definido comopinentry-gnome3
, existia no meu sistema, mas não funcionava. Eu tive que instalar manualmentepinentry-gtk-2
.Respostas:
Esse não é o único arquivo que ele está vendo.
No GnuPG 1.x (e 2.0), a "secring" costumava ter uma cópia duplicada dos dados públicos do seu bloqueio de chaves, portanto era totalmente independente (e a única diferença entre
gpg -k
egpg -K
qual arquivo seria lido) , mas, ao mesmo tempo, mais difícil para o programa manter.No GnuPG 2.1, as chaves secretas agora são armazenadas independentemente - elas são mantidas pelo gpg-agent , que as mantém
~/.gnupg/private-keys-v1.d/
. Então, ambosgpg -k
egpg -K
agora precisam ler as informações do OpenPGP no pubring, mas o último pergunta adicionalmente ao gpg-agent sobre quais certificados têm chaves secretas associadas. Se você estiver usando strace , deverá notar umaconnect()
ligação logo após ler o pubring.Se o GnuPG não migrou automaticamente as chaves, basta importar a seção inteira diretamente:
Para verificar o conteúdo do agente manualmente:
Estes são os "keygrips" - compare-os com a seção do GnuPG:
fonte
gpg --gen-key
qual queria usargopass
. Infelizmente,gopass
usosgpg2
...gpg2 --import
funcionou como um encanto! Obrigado!gpg2 --import ~/.gnupg/pubring.gpg
consertei.Eventualmente, eu decidi que o problema era que eu estava usando o Debian Unstable e havia uma incompatibilidade de versão introduzida por um
apt-get dist-upgrade
. Suponho que é por isso que eles chamam de "Instável".fonte