晴耕雨読

working in the fields on fine days and reading books on rainy days

GPG秘密鍵を別PCに移動させる

PC移行作業でGPG秘密鍵も移動させる(エクスポート&インポート)ときの手順です。

移行元PC

移行元PCのgpgで秘密鍵をエクスポートします。

$ gpg -a --export-secret-key mymail@example.com > sec.pem

移行先

エクスポートした秘密鍵を移行先PCでインポートします。

$ gpg --import sec.pem
$ gpg --list-key
/c/Users/myname/.gnupg/pubring.kbx
---------------------------------
pub   ed25519 2018-10-26 [C]
      F38F3A06B593ED8881D8934D402F552C68EFB93F
uid           [ unknown] myname <mymail@example.com>
sub   rsa4096 2018-10-26 [SEA]

インポートした秘密鍵の公開鍵の信用値をunknownから最大の「5」に変更します。

$ gpg --edit-key mymail@example.com

Secret key is available.

sec  ed25519/402F552C68EFB93F
     created: 2018-10-26  expires: never       usage: C
     trust: unknown       validity: unknown
ssb  rsa4096/38A3BCAF7168C0C3
     created: 2018-10-26  expires: never       usage: SEA
[ unknown] (1). myname <mymail@example.com>

gpg> trust
sec  ed25519/402F552C68EFB93F
     created: 2018-10-26  expires: never       usage: C
     trust: unknown       validity: unknown
ssb  rsa4096/38A3BCAF7168C0C3
     created: 2018-10-26  expires: never       usage: SEA
[ unknown] (1). myname <mymail@example.com>

Please decide how far you trust this user to correctly verify other users keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 5   # <== 「5」と入力
Do you really want to set this key to ultimate trust? (y/N) y   # <== 「y」と入力

sec  ed25519/402F552C68EFB93F
     created: 2018-10-26  expires: never       usage: C
     trust: ultimate      validity: unknown
ssb  rsa4096/38A3BCAF7168C0C3
     created: 2018-10-26  expires: never       usage: SEA
[ unknown] (1). myname <mymail@example.com>
Please note that the shown key validity is not necessarily correct
unless you restart the program.

gpg> quit   # <== 「quit」と入力

Gitコマンドで署名

以下はGPGをGitのタグの署名で使う人向けの設定です。

署名時に使用する秘密鍵を指定する。

$ git config --global user.signingkey F38F3A06B593ED8881D8934D402F552C68EFB93F

署名付きタグの作成する(パスフレーズの入力が必要)。

$ git tag -s 2021.05 -m '2021.05' dafc828

タグをpushする。

$ git push origin 2021.05

参考文献