如何使用新的 gpg 密钥重新加密 .password-store

Kri*_*ris 7 passwords gnupg

我正在使用pass来管理我的密码。它使用我的 GPG 密钥进行加密。

我的密钥最近过期了,我创建了一个新的。

pass 由于我的旧密钥过期,将不再创建新密码。

我可以解密现有的密码。它使用旧 ID3D1B47D3解密时我看到gpg: Note: secret key 3D1B47D3 expired at Sun 02 Jul 2017 16:36:45 BST

3D1B47D3是我的旧密钥 ID,1F7CCC88是我的新密钥 ID。

因此我需要~/.password-store使用我的新密钥重新加密。文档说 using pass init 1F7CCC88应该这样做。

但是我收到错误:

gpg: [stdin]: encryption failed: Unusable public key
gpg: Note: secret key 3D1B47D3 expired at Sun 02 Jul 2017 16:36:45 BST`. 
Run Code Online (Sandbox Code Playgroud)

每个密码都会重复该错误。

~/.password-store/.gpg-id包含我自运行以来的新密钥 ID init

我可以gpg --encrypt filename使用我的新密钥手动加密文件。

请注意,我的密钥和子密钥都有将来的到期日期。

pub   4096R/1F7CCC88 2016-07-02 [expires: 2018-07-28]
uid                  Kris Leech <kris.leech@gmail.com>
sub   4096R/3D1B47D3 2016-07-02 [expires: 2018-07-28]
sub   2048R/E77481E9 2016-07-28 [expires: 2018-07-28]
Run Code Online (Sandbox Code Playgroud)

小智 0

看起来 pass 使用的是 gpg2,您使用 gpg 创建了密钥,并且 gpg2 不支持某些内容(不推荐使用 md5?)。

例如用 gpg 解密可以工作:

$ gpg -d --quiet secret.gpg 

You need a passphrase to unlock the secret key for
user: "bot three (third bot) <bot3@blah.com>"
2048-bit RSA key, ID 2A8EA0F6, created 2017-08-24 (main key ID 2003591B)

something much longer then blah
Run Code Online (Sandbox Code Playgroud)

而 gpg2 则不会:

$ gpg2 -d --quiet secret.gpg 
gpg: decryption failed: No secret key
Run Code Online (Sandbox Code Playgroud)

重命名 gpg2 强制传递使用 gpg:

# mv /usr/bin/gpg2 /usr/bin/gpg2-css
$ pass show test/secret
something much longer then blah
Run Code Online (Sandbox Code Playgroud)

你能做的是:

  1. 重命名 gpg2.
  2. 创建 gpg2 密钥。
  3. 使用新的 gpg2 生成的密钥重新初始化密码存储以重新加密。
  4. 将 gpg2 重命名回 gpg2。

此时应该再次工作。从这里开始,使用 gpg2,而不是 gpg。

嗯。