Używam enigmail od ponad roku bez problemu, a dziś to nie działa.
Znalazłem następujący interesujący fakt:
gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails
Więc coś jest nie tak z gpg w wersji 2 na moim komputerze.
Doprowadziło mnie to do tego, że:
gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!)
To wydaje się być przyczyną problemu ... oczywiście gpg2
nie można znaleźć tajnego klucza, ponieważ szuka on niewłaściwego pliku.
Jak mogłem gpg2
ponieść porażkę, gdy moje gpg
prace działały dobrze? Nie widzę żadnych opcji określających, skąd są odczytywane tajne klucze.
Czy ktoś ma jakieś pomysły?
Odpowiedź na @grawity :
Dziękuję, doceniam twoją pomoc. Pobiegłem strace
i widzę, o czym mówisz.
Jednak nawet po tym, jak gpg2 --import ...
nie widzę żadnej różnicy w zachowaniu. Mogę go uruchomić tylko wtedy, gdy uruchomię ponownie (bez uruchamiania gpg-agent), uruchom gpg2 --import ...
, a następnie uruchom gpg2 --decrypt ...
. Po tej sekwencji thunderbird + enigmail również zachowuje się ładnie. Jednak po około 15 minutach (zgaduję, że hasło, które wprowadziłem w celu odszyfrowania wygasło), gpg-agent
to wraca do swojego starego zachowania. Ta sekwencja jest powtarzalna.
Oto kilka danych wyjściowych, jeśli to pomaga wyczyścić cokolwiek:
wyjście gpg2 -K
:
/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec rsa4096/AAAAAAAA <date> [SC]
uid [ultimate] <description of me>
ssb rsa4096/BBBBBBBB <date> [E]
wyjście z gpg-connect-agent
> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK
wyjście z 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>"
wyjście z 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
źródło
gpg-agent
i program pinentry musiał być ustawiony napinentry-gtk-2
. Wcześniej był ustawiony napinentry-gnome3
, który istniał w moim systemie, ale nie działał. Musiałem ręcznie zainstalowaćpinentry-gtk-2
.Odpowiedzi:
To nie jedyny plik, na który patrzy.
W GnuPG 1.x (2,0), to „SECRING” używane mieć duplikat danych publicznych Twojego klucz mechaniczny, jak również, więc to był całkowicie samowystarczalny (a jedyna różnica między
gpg -k
igpg -K
był plik, który by to czytać) , ale jednocześnie trudniejsze do utrzymania przez program.W GnuPG 2.1 tajne klucze są teraz przechowywane niezależnie - są one obsługiwane przez gpg-agent , który je utrzymuje
~/.gnupg/private-keys-v1.d/
. Więc zarówno teraz, jakgpg -k
igpg -K
teraz, musimy przeczytać informacje o OpenPGP z publikacji, ale ta ostatnia dodatkowo pyta gpg-agent o to, które certyfikaty są powiązane z tajnymi kluczami. Jeśli używasz strace , powinieneś zauważyćconnect()
połączenie zaraz po przeczytaniu publikacji.Jeśli GnuPG nie przeprowadził automatycznej migracji kluczy, po prostu zaimportuj cały mechanizm zabezpieczeń bezpośrednio:
Aby ręcznie sprawdzić zawartość agenta:
Oto „uchwyty klawiszy” - porównaj je z zabezpieczeniami GnuPG:
źródło
gpg --gen-key
, z którą chciałem korzystaćgopass
. Niestetygopass
zastosowaniagpg2
...gpg2 --import
działały jak urok! Dzięki!gpg2 --import ~/.gnupg/pubring.gpg
to naprawiłem.W końcu zdecydowałem, że problem polega na tym, że korzystam z Debian Unstable i wprowadzono niedopasowanie wersji wprowadzone przez
apt-get dist-upgrade
. Przypuszczam, że dlatego nazywają to „niestabilnym”.źródło