Saya telah menggunakan enigmail selama lebih dari setahun tanpa masalah, dan hari ini tidak berfungsi.
Saya menemukan fakta menarik berikut:
gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails
Jadi ada yang rusak dengan versi gpg 2 di mesin saya.
Ini membuat saya melihat bahwa:
gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!)
Ini tampaknya menjadi akar masalah ... tentu saja gpg2
tidak dapat menemukan kunci rahasia karena mencari dalam file yang salah.
Bagaimana saya bisa gpg2
gagal ketika gpg
pekerjaan saya baik-baik saja? Saya tidak melihat opsi untuk menentukan dari mana kunci rahasia dibaca.
Adakah yang punya ide?
Tanggapan untuk @grawity :
Terima kasih, saya menghargai bantuan Anda. Saya berlari strace
, dan saya mengerti apa yang Anda bicarakan.
Namun, bahkan setelah gpg2 --import ...
saya melihat tidak ada perbedaan dalam perilaku. Saya hanya bisa membuatnya bekerja jika saya reboot (tanpa memulai gpg-agent), jalankan gpg2 --import ...
, lalu jalankan gpg2 --decrypt ...
. Setelah urutan itu, thunderbird + enigmail juga berperilaku baik. Namun, setelah sekitar 15 menit (tebakan saya adalah kata sandi yang saya masukkan untuk mendekripsi telah kedaluwarsa), kemudian gpg-agent
kembali ke perilaku semula. Urutan ini dapat diulang.
Jadi, inilah beberapa keluaran jika itu membantu membersihkan semuanya:
output dari gpg2 -K
:
/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec rsa4096/AAAAAAAA <date> [SC]
uid [ultimate] <description of me>
ssb rsa4096/BBBBBBBB <date> [E]
output dari gpg-connect-agent
> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK
output dari 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>"
output dari 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
sumber
gpg-agent
, dan program pinentry perlu diaturpinentry-gtk-2
. Sebelum diaturpinentry-gnome3
, yang ada di sistem saya, tetapi tidak berhasil. Saya harus menginstal secara manualpinentry-gtk-2
.Jawaban:
Itu bukan satu - satunya file yang dilihatnya.
Di GnuPG 1.x (dan 2.0), "secring" dulu memiliki duplikat data publik keyblock Anda juga, jadi itu sepenuhnya mandiri (dan satu-satunya perbedaan antara
gpg -k
dangpg -K
file mana yang dibacanya) , tetapi pada saat yang sama lebih sulit untuk mempertahankan program.Di GnuPG 2.1, kunci rahasia sekarang disimpan secara independen - mereka dikelola oleh gpg-agent , yang menyimpannya
~/.gnupg/private-keys-v1.d/
. Jadi keduanyagpg -k
dangpg -K
sekarang harus membaca informasi OpenPGP dari penerbit, tetapi yang terakhir juga bertanya kepada agen gpg tentang sertifikat mana yang telah mengaitkan kunci rahasia. Jika Anda menggunakan strace , Anda akan melihatconnect()
panggilan tepat setelah membaca pubring.Jika GnuPG tidak secara otomatis memigrasikan kunci, cukup impor seluruh pemisahan secara langsung:
Untuk memeriksa konten agen secara manual:
Ini adalah "keygrips" - bandingkan dengan secring GnuPG:
sumber
gpg --gen-key
yang ingin saya gunakangopass
. Sayangnya,gopass
kegunaangpg2
...gpg2 --import
bekerja seperti pesona! Terima kasih!gpg2 --import ~/.gnupg/pubring.gpg
memperbaikinya.Akhirnya, saya memutuskan masalahnya adalah bahwa saya menggunakan Debian Unstable dan ada ketidakcocokan versi yang diperkenalkan oleh
apt-get dist-upgrade
. Saya kira itu sebabnya mereka menyebutnya "Tidak Stabil".sumber