อินิกเมลไม่ขอรหัสผ่าน 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 ว่า:

    คุณกำลังใช้ gpg-agent สำหรับการจัดการข้อความรหัสผ่าน การล้างข้อความรหัสผ่านจึงไม่สามารถทำได้จากภายในอินิกเมล

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

  4. ทำให้gpg-agentลืมข้อความรหัสผ่านของฉัน:

    pkill -SIGHUP gpg-agent
    
  5. Seahorse->GnuPG keys ลบคีย์ทั้งหมดและนำเข้าใหม่

ไม่มีรายการใดที่สร้างความแตกต่างให้กับปัญหา ฉันสงสัยว่าฉันจะขอให้อินิกเมลร้องขอข้อความรหัสผ่านของฉันได้อย่างไร

ขอบคุณล่วงหน้า!
Bronk

แก้ไข

  1. การลบ/etc/xdg/autostart/gnome-keyring-gpg.desktopไม่ได้ทำอะไร
  2. การลบseahorseไม่ได้ทำอะไร
  3. การใช้decrypt-file:

    Couldn't decrypt file: mail.eml.pgp
    Bad passphrase
    

ติดตั้งpinentry-gtk2บน Ubuntu ด้วย Unity
Natim

ฉันมีปัญหานี้เช่นกัน แต่แปลกฉันสามารถลงชื่ออีเมลของฉันเอง แต่มันให้ข้อความเดียวกันของคุณเมื่อฉันลองถอดรหัสข้อความที่เซ็นชื่อด้วย pubkey ของฉัน
Geremia

คำตอบ:


7

ลองสิ่งนี้: https://www.enigmail.net/support/gnupg2_issues.php ในกรณีของฉันฉันต้องติดตั้ง pinentry รุ่น grafical (แพ็คเกจ pinentry-qt4)

"การแก้ไขปัญหากับ GnuPG 2.x และ gpg-agent

หมายเหตุ GnuPG 2.x ต้องการ "ตัวแทน" เพื่อจัดการข้อความรหัสผ่าน โดยค่าเริ่มต้นจะทำโดย gpg-agent แต่มีเครื่องมืออื่น ๆ ที่ใช้ชุดย่อยของการทำงานของมัน คำแนะนำเหล่านี้สำหรับตัวแทน gpg เท่านั้น หากคุณใช้ตัวแทนเช่น gnome-keyring, seahorse-agent หรือ KDE Wallet Manager คำแนะนำเหล่านี้จะไม่สามารถใช้ได้ ปัญหาที่พบบ่อยที่สุด

อาการ

ปัญหาที่พบบ่อยที่สุดคือ gpg-agent (ส่วนหนึ่งของ GnuPG) ไม่สามารถเปิด pinentry (เครื่องมือที่ใช้ในการค้นหาข้อความรหัสผ่านของคุณ) อินิกเมลจะแสดงข้อความเช่น:

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."

ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Karl Richter

บิตสุดท้ายบอกว่า "ถ้า gpg-agent ยังคงไม่สามารถเปิด pinentry จาก Enigmail ดังนั้น ... " - แต่ IF pinentry นั้นทำงานอย่างถูกต้อง แต่การถอดรหัสยังไม่ทำงานคำแนะนำจะไม่ช่วยที่นี่ ...
nerdoc

1

ฉันมีปัญหาเดียวกัน แต่พบว่าการฆ่า gpg-agent เป็นวิธีการแก้ปัญหา

(จากซอร์สโค้ดฉันพบว่าคุณสามารถเปิดใช้งานการบันทึก enigmail โดยแก้ไขไฟล์ "ค่าเริ่มต้น / การกำหนดค่า / enigmail.js" ที่ใดที่หนึ่งภายใต้ ~ /. ธันเดอร์เบิร์ดให้ตั้งค่าคุณสมบัติ "extensions.enigmail.logDirectory" เป็น "/ tmp" ล็อกไฟล์ "/tmp/enigdbug.txt" จากนั้นแสดงคำสั่ง gpg เต็มรูปแบบที่อินิกเมลกำลังทำงานลงท้ายด้วย "--use-agent" ฉันใช้คำสั่ง gpg นั้นจากบรรทัดคำสั่งโดยป้อนข้อความอีเมลที่เข้ารหัสไว้ บ่นกับข้อความแสดงข้อผิดพลาด "gpg: ปัญหากับตัวแทน: ไม่มี PINentry" Googling สำหรับข้อความแสดงข้อผิดพลาดนั้นเปิดข้อเสนอแนะเพื่อฆ่าตัวแทน gpg ในขณะเดียวกัน NSA rubs มือในประสบการณ์ที่ผู้ใช้ของการเข้ารหัส PKI คือ ขยะมาก)


ฉันมีปัญหาเช่นเดียวกับ OP การรันคำสั่งที่แน่นอนที่พบใน enigdbug.txt อย่างต่อเนื่องทำให้ได้ผลลัพธ์ที่สมบูรณ์แบบ : \
Joel Cross

ไม่ได้ช่วยที่นี่ แม้ว่าgpg -d message.emlหมวกปัญหาเดียวกัน: gpg: public key decryption failed: No passphrase given- โดยไม่ต้องถามฉันสำหรับวลีรหัสผ่าน
nerdoc

1

ฉันมีปัญหาที่คล้ายกัน ธันเดอร์เบิร์ดกำลังขอให้ใส่รหัสผ่านกุญแจของฉันอีกครั้งและพวงกุญแจ 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 

use-agentไม่ต้องการอีกต่อไปใน OpenGPG 2.1 - ตัวแทนจะถูกใช้ในทุกกรณี
nerdoc

0

มีข้อผิดพลาดข้อผิดพลาดเดียวกันเกี่ยวกับ pinentry ในตอนท้ายฉันคิดว่า gpg-agent กำลังใช้ pinentry ผิด แก้ไขได้โดยการตั้งค่า pinentry ที่เหมาะสมโดยการแก้ไข~ / .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

ในธันเดอร์เบิร์ดเลือกข้อความคลิกที่แฮมเบอร์เกอร์ขยายเมนูอินิกเมลและเลือกถอดรหัส / ตรวจสอบ คุณจะได้รับพรอมต์รหัสผ่านหลังจากนั้นข้อความจะถูกถอดรหัส


ไม่ได้สร้างความแตกต่างใด ๆ ...
nerdoc

คุณช่วยอธิบายได้ไหม คุณไม่ได้รับพรอมต์รหัสผ่านหรือไม่ถอดรหัสข้อความ?
นายผิด

0

ฉันมีปัญหาที่คล้ายกัน! การติดตามการดีบัก gpg-agent ทำได้โดย:

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

ฉันพบว่ามีบางอย่างผิดพลาดระหว่างอินิกเมลและจีพีจีและมันไม่เคยถามวลีรหัสผ่าน แต่ในกรณีที่ข้อความรหัสผ่านนั้นโหลดล่วงหน้าทั้งหมดทำงานได้อย่างสมบูรณ์

ในกรณีของฉันปัญหาสิ่งที่ในอดีตฉันบังคับตัวเลือกการติดตามใน ~ / .gnupg / gpg.conf

pinentry-mode loopback

กระบวนการนี้ขัดข้อง คุณสามารถตรวจสอบคำสั่งที่ enigmail กำลังเปิดใช้งานโหมดผู้เชี่ยวชาญใน Enigmail และจากนั้นใน "ตัวเลือกการดีบัก -> ดูคอนโซล"

แสดงความคิดเห็นและทุกอย่างทำงาน


0

ฉันมีปัญหาเดียวกันกับ Ubuntu Budgie 18.04 ด้วยเหตุผลบางอย่างpinentry-gnome3ไม่แสดงข้อความโต้ตอบ

ฉันสามารถแก้ปัญหาด้วยการติดตั้งpinentry-fltkและเลือกมันในการปรับปรุงทางเลือก:

sudo apt-get install pinentry-fltk
sudo update-alternatives --config pinentry

ในกล่องโต้ตอบที่แสดงเลือก usr/bin/pinentry-fltk

There are 2 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
  0            /usr/bin/pinentry-gnome3   90        auto mode
* 1            /usr/bin/pinentry-fltk     70        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode

Press <enter> to keep the current choice[*], or type selection number: 1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.