0
0

More than 1 year has passed since last update.

Gitのコミット署名の有効期限を更新するために行ったことメモ

Last updated at Posted at 2022-04-03

約2年前、コミット署名を行うための準備メモを投稿しました。

PCのクリーンインストールついでに、署名用サブ鍵の有効期限を更新したので記録として残します。
なおこの記事を引用する場合「前回の記事」と記載します。

ソフトウェアのセットアップ

以前のメモではScoopを使ってGPGをインストールしましたが、今回はwingetを用いました。

 winget search gpg
名前              ID              バージョン 一致         ソース
-----------------------------------------------------------------
GPG ICT Summit    9NBLGGH4XT16    Unknown                 msstore
GNU Privacy Guard GnuPG.GnuPG     2.3.4      Command: gpg winget
Keybase           Keybase.Keybase 5.9.0.13   Tag: gpg     winget
Gpg4win           GnuPG.Gpg4win   4.0.0                   winget

 winget install --id GnuPG.GnuPG

wingetでインストールしたGPGの場合、鍵情報は %APPDATA%\gnupg に格納されます。

以前バックアップで退避した情報を復元する

前回の記事、マスター鍵を安全な場所に退避させ、秘密鍵を削除する でバックアップしたファイルを%APPDATA%\gnupg に格納します。

この状態で gpg --with-keygrip --list-key コマンドを実行すると次のように表示されます。

  gpg --with-keygrip --list-key
C:\Users\cocoabreak\AppData\Roaming\gnupg\pubring.kbx
------------------------------------------------
pub   nistp521 2019-12-23 [C]
      ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
      Keygrip = KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
uid           [ultimate] Hirofumi Akiyama <cocoabreak.git@gmail.com>

署名用のサブ鍵が表示されていませんが復元完了です。

サブ鍵の有効期限を更新する

ここからが本題となります。
フィンガープリントを指定して gpg --edit-key --expert コマンドを実行すると、署名用のサブ鍵(有効期限2022年1月2日)が表示されます(3ヶ月も放置してたんかー:scream:)。

 gpg --edit-key --expert ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
gpg (GnuPG) 2.3.4; Copyright (C) 2021 g10 Code GmbH
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.

sec  nistp521/XXXXXXXXXXXXXXXX
     created: 2019-12-23  expires: never       usage: C
     trust: ultimate      validity: ultimate
ssb  ed25519/YYYYYYYYYYYYYYYY
     created: 2019-12-23  expired: 2022-01-02  usage: S
[ultimate] (1). Hirofumi Akiyama <cocoabreak.git@gmail.com>

key コマンドでサブ鍵を指定し、expire コマンドで有効期限の変更モードにします。

gpg> key YYYYYYYYYYYYYYYY

sec  nistp521/XXXXXXXXXXXXXXXX
     created: 2019-12-23  expires: never       usage: C
     trust: ultimate      validity: ultimate
ssb* ed25519/YYYYYYYYYYYYYYYY
     created: 2019-12-23  expired: 2022-01-02  usage: S
[ultimate] (1). Hirofumi Akiyama <cocoabreak.git@gmail.com>

gpg> expire
Changing expiration time for a subkey.
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)

今回は2年にしました。
メイン鍵のパスフレーズを入力し、save コマンドを実行すれば有効期限の更新は完了です。

タイトルなし.png

gpg> expire
Changing expiration time for a subkey.
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 2y
Key expires at 2024/04/02 12:03:18      ( W    )
Is this correct? (y/N) y

sec  nistp521/XXXXXXXXXXXXXXXX
     created: 2019-12-23  expires: never       usage: C
     trust: ultimate      validity: ultimate
ssb* ed25519/YYYYYYYYYYYYYYYY
     created: 2019-12-23  expires: 2024-04-02  usage: S
[ultimate] (1). Hirofumi Akiyama <cocoabreak.git@gmail.com>

gpg> save

有効期限が2024年4月2日に延長されました!
あとは前回の記事同様、バックアップとマスター鍵の秘密鍵を削除すれば終わりです。

更新したサブ鍵で署名をすれば、GitHubではVerified状態となります。
github_history.png

※重要な補足

Verified状態にはなりますが、Verifiedの詳細を見るとこのような表示がありました。

This commit was signed with the commiter's verified signature. The key expired after the commit was signed.

解消するためには、冒頭に掲載した「前回の記事」に記載している、公開鍵のエクスポートとGitHubへの登録を行い、
公開鍵の更新を行ってください。

おまけ

GitKrakenの場合、有効期限が切れたサブ鍵で署名を行うとこんな感じになります。
gitkraken_expired.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0