web-dev-qa-db-ja.com

gpg --encryptが失敗する

ファイルを暗号化しようとすると、KGpgエディターウィンドウに次のエラーが表示されます。

暗号化はエラーコード2で失敗しました

コマンドラインで私は得ます:

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
 ---------------------------------
pub   2048D/5E04B919 2012-02-02 [expires: 2016-02-01]
uid                  Firstname Lastname <[email protected]>
uid                  [jpeg image of size 4005]

$ 
$ gpg --encrypt file-to-encrypt
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: [email protected]
No such user ID.

これは、以前はエディターとコマンドラインの両方で同じキーを使用して機能していました。 Current recipients:は空です。何故ですか?

更新:

コマンドラインで-rオプションを使用してユーザーIDを指定しようとすると、次のようになります。

$ gpg -r [email protected] --encrypt file-to-encrypt
gpg: [email protected]: skipped: unusable public key
gpg: file-to-encrypt: encryption failed: unusable public key

情報:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.10
Release:        12.10
Codename:       quantal

$ dpkg -s gnupg
Package: gnupg
Status: install ok installed
Priority: important
Section: utils
Installed-Size: 1936
Maintainer: Ubuntu Developers <[email protected]>
Architecture: AMD64
Multi-Arch: foreign
Version: 1.4.11-3ubuntu4.4
34
marekful

私は問題と解決策が何であるかを理解したので、誰かが同じ問題に遭遇した場合に役立つ詳細を回答します。

問題はややあいまいで、実際に有益なエラーメッセージは表示されません。

暗号化サブキーの有効期限が切れていることがわかりました。不思議なことに、gpg --list-keysは期限切れのサブキーを表示しませんでした!!サブキーの有効期限が延長されると、gpg --list-keysの出力に含まれました。

また、KGpgは、サブキーの有効期限が切れていることも、サブキーの有効期限を延長することもできません(メインキーの有効期限のみを変更できます)。

ソリューションの前のgpg --list-keysの出力(個人情報を変更しました):

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
---------------------------------
pub   2048D/5E04B919 2012-02-02 [expires: 2016-02-01]
uid                  Firstname Lastname <[email protected]>
uid                  [jpeg image of size 4005]

これ以上何もない。

ただし、gpg --edit 5E04B919は、サブキーの有効期限が切れていることを示しました

$ gpg --edit 16AE78C5
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  2048D/5E04B919  created: 2012-02-02  expires: 2016-02-01  usage: SCA 
                     trust: ultimate      validity: ultimate
sub  1024g/16AE78C5  created: 2012-02-02  expired: 2014-02-01  usage: E   
[ultimate] (1). Firstname Lastname <[email protected]>
[ultimate] (2)  [jpeg image of size 4005]

gpg>

Googleで検索したところ、このメーリングリストのアーカイブが見つかりました。これにより、gpgコマンドラインを使用してサブキーの有効期限を延長する正しい方向が示されました。

http://lists.gnupg.org/pipermail/gnupg-users/2005-June/026063.html

私は指示に従い、サブキーの有効期限を延長しました。この後、gpg --list-keysは異なる出力を提供しました:

$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
---------------------------------
pub   2048D/5E04B919 2012-02-02 [expires: 2016-03-12]
uid                  Firstname Lastname <[email protected]>
uid                  [jpeg image of size 4005]
sub   1024g/16AE78C5 2012-02-02 [expires: 2016-03-12]

この後、すべてが正常に戻り、ファイルを暗号化できました。

38
marekful

私の場合、キー(gpg --import path/to/key)他のマシンで生成されました。

信頼できないので使えませんでした。

gpg --edit-key "MY KEY ID" trustおよび信頼レベル5を設定します。

その後、私の鍵が信頼できるようになり、暗号化に使用できるようになりました。

6
mixel

暗号化に使用するキーを指定する必要があるため、この場合に必要なコマンドはgpg -r [email protected] --encrypt file-to-encrypt

2
Tim Lamballais

私は同じ問題(期限切れの公開鍵)に直面し、このスレッドに出くわしました。 marekful が提案する解決策は非常に便利ですが、(対応する)秘密鍵にアクセスできる場合にのみ機能します。

私の場合、この前提条件が満たされなかったので、最終的に先に進み、システム時刻を以前の日付に変更しました(キーがまだ有効なとき)。これにより、skipped: unusable public keyメッセージ。

期限切れのキーを使用することはお勧めしません。絶対に必要な場合は、これを最後の手段として使用してください。

1
kung_fu_coder