web-dev-qa-db-ja.com

gpg2に期限切れのキーを使用させる方法は?

$ gpg -ear XXXXXXX
gpg: XXXXXXXX: skipped: unusable public key

$ gpg --debug-ignore-expiration -ear XXXXXXXX
gpg: Invalid option "--debug-ignore-expiration"

暗号化する方法は?キーサーバーから入手できるキーの更新はありません。ユーザーがまだ期限切れのキーを持っているか、まったく表示されない場合は、メッセージが表示されます。

いくつかありますか--just-do-that-I-want GPGのソースコードを変更せずにこれを行うことを可能にするオプション?

14
Vi.

@robがコメントで示唆しているように、 libfaketime はこれをうまく処理します:

$ gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: Note: signature key 077EA269D5B9D38C expired Sun 09 Nov 2014 12:57:25 PM +03
gpg: D5B9D38C: skipped: Unusable public key
gpg: [stdin]: encryption failed: Unusable public key

$ faketime  '2012-12-24 08:15:42'  gpg  -v -v -v --batch --trust-model always -ear D5B9D38C <<< "qweqe"
gpg: using character set 'utf-8'
gpg: using subkey 85231B396B9569ED instead of primary key 077EA269D5B9D38C
gpg: No trust check due to '--trust-model always' option
gpg: reading from '[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "..."
-----BEGIN PGP MESSAGE-----
...

古い答え:

  1. UMLを起動します(ユーザーモードLinux)
  2. UML内の日付を許容範囲に設定します。
  3. UMLでメッセージを暗号化する
12
Vi.

使用 --faked-system-timeオプション:

gpg2 --faked-system-time 20100101T000000 -e -r keyid

正しい時刻を記録しながら(特に署名する場合)、期限切れのキーに暗号化を強制するオプションをお勧めします。

3
Margaret

ハードウェアとシステムクロックをリセットします。

Sudo hwclock --set --date "12/31/2017 23:59:59" && \
Sudo hwclock --hctosys && \
gpg --sign-with $keyid --clearsign --armor < $file

その後(NTPを有効にしていることを願っています))ハードウェアクロックを次のように修正します。

Sudo hwclock --systohc
2
guest