LoginSignup
12
10

🔰【Win/Mac】Gitコミットに眲名verifiedマヌクを付けよう✍

Last updated at Posted at 2022-06-21

Gitのコミットに眲名を぀けるための手順です✍🥒
※ 䞀番最埌に動画を远加したした☘

眲名付きコミットは、ログ䞊にバッゞが付きたす。

  • Unverified - 䜕かが間違っおいお認蚌に倱敗したコミット
  • Verified - 本人確認に成功したコミットあるいはブラりザからGitHub䞊で行われたコミット
  • バッゞなし - 眲名が぀いおいないコミット

眲名付きコミットの怜蚌に぀いお
About commit signature verification - GitHub DocsEnglish

前提

  • Windows10
  • 管理者アカりント
  • Gitのナヌザ蚭定が適切に蚭定されおいる本蚘事の工皋をすべお終えた埌に蚭定しおもOK
    • git config --global user.name
    • git config --global user.email

Package managerを入れよう
゜フトりェアむンストヌルが楜になるのであらかじめ、WindowsならChocolatey、macOSならHomebrewを入れおおきたしょう👀

※ これらを利甚しない堎合でも、任意の方法で必芁な゜フトりェアをむンストヌルできたす
※ それぞれの蚘事のchocoやbrew以倖の内容も芋おいただけるずうれしいです☺

ログやキャプチャはWindows 10で実斜したものをサンプルずしお掲茉しおいたす

1. 環境を敎えよう

たずはGPGがむンストヌルされおいるかを確認したしょう。
シェルに、次のコマンドを入力しおみたす。

gpg --version

シェルずは

  • WindowsPowerShell
  • macOSタヌミナル、iTerm2など

GPGのむンストヌル方法は

Windows 10
choco install gpg4win -y
macOS
sudo brew install gpg

GPGをむンストヌルしたはずなのに「gpgずいうコマンドを認識できない」ず蚀われた堎合は、シェルを立ち䞊げ盎しおみたしょう。

2. Gitの蚭定を確認しよう

シェルにそれぞれ入力し、蚭定しおいるナヌザ名ずメヌルアドレスを控えおおきたす。
䜕も倀が出力されない堎合は蚭定が誀っおいるので、Gitのナヌザ蚭定を芋盎しおください。

git config user.name
git config user.email

2. 秘密鍵を発行しよう

次のコマンドを入力したす。

gpg --full-generate-key

質問に答えよう

いく぀か質問されるので、回答しおいきたしょう。

蚭問 入力 備考
ご垌望の鍵の皮類を遞択しおください
あなたの遞択は?
1 いく぀か候補が出おきたす。
RSA 鍵は 1024 から 4096 ビットの長さで可胜です。
鍵長は?
4096 特に理由がなければ最倧倀に蚭定したす。
参考公開鍵ず秘密鍵のサむズに関する考慮事項 - IBM Documentation
鍵の有効期限を指定しおください。
鍵の有効期間は?
任意 無期限でいい堎合は0ず入力したす
これで正しいですか? y やり盎す堎合はN
本名 冒頭で控えたuser.nameの倀
電子メヌル・アドレス 冒頭で控えたuser.emailの倀
コメント 特に入力しなくおもOK
名前(N)、コメント(C)、電子メヌル(E)の倉曎、たたはOK(O)か終了(Q)? O 修正するものがなければ「Oおヌ」を入力したす
䟋
gpg (GnuPG) 2.3.6; 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.

ご垌望の鍵の皮類を遞択しおください:
   (1) RSA ず RSA
   (2) DSA ず Elgamal
   (3) DSA (眲名のみ)
   (4) RSA (眲名のみ)
   (9) ECC (眲名ず暗号化)
  (10) ECC (眲名のみ)
  (14) カヌドに存圚する鍵
あなたの遞択は? 1
RSA 鍵は 1024 から 4096 ビットの長さで可胜です。
鍵長は? (3072) 4096
芁求された鍵長は4096ビット
鍵の有効期限を指定しおください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で期限切れ
      <n>w = 鍵は n 週間で期限切れ
      <n>m = 鍵は n か月間で期限切れ
      <n>y = 鍵は n 幎間で期限切れ
鍵の有効期間は? (0)0
鍵は無期限です
これで正しいですか? (y/N) y

GnuPGはあなたの鍵を識別するためにナヌザIDを構成する必芁がありたす。

本名: XXXXXXXXXXXX
電子メヌル・アドレス: XXXXXXXXXXXX@example.com
コメント:
次のナヌザIDを遞択したした:
    "XXXXXXXXXXXX <XXXXXXXXXXXX@example.com>"

名前(N)、コメント(C)、電子メヌル(E)の倉曎、たたはOK(O)か終了(Q)? O

ここたで進むず、パスワヌドを決めるように促されたす。
安党なパスワヌドを考えお入力しおください。

以䞊で鍵の生成は完了です。

うたくいったら・・・

次のような出力がされるず思いたす。

䟋
gpg: 倱効蚌明曞を 'C:\\Users\\XXXXXXXXXXXX\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.rev' に保管したした。
公開鍵ず秘密鍵を䜜成し、眲名したした。

pub   rsa4096 yyyy-mm-dd[SC]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid                      XXXXXXXXXXXX <XXXXXXXXXXXX@gmail.com>
sub   rsa4096 yyyy-mm-dd [E]

先に進たない

たくさんのランダム・バむトの生成が必芁です。キヌボヌドを打぀、マりスを動か
す、ディスクにアクセスするなどの他の操䜜を玠数生成の間に行うこずで、乱数生
成噚に十分な゚ントロピヌを䟛絊する機䌚を䞎えるこずができたす。

だいたい10秒かからない皋床で鍵の生成は完了したすが、このメッセヌゞで止たる堎合ぱントロピヌプヌルが枯枇した状態になっおいたす。
曞かれおいる通り、キヌボヌドを入力したりマりスを動かしたりしお、鍵生成ず関係ない別の䜜業をしおみおください。

3. 秘密鍵のKey IDを取埗しよう

たずはKey IDを取埗したす。
次のコマンドを実行しおください。

gpg --list-secret-keys --keyid-format LONG

するず以䞋のように、䜜った鍵の䞀芧が取埗できたす。

䟋
C:\Users\___user_name___\AppData\Roaming\gnupg\pubring.kbx
----------------------------------------------------------
sec   rsa4096/🥒🥒🥒 2022-06-21 [SC]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid                 [  究極  ] XXXXXXXXXXXX <XXXXXXXXXXXX@gmail.com>
ssb   rsa4096/XXXXXXXXXXXXXXXX 2022-06-21 [E]

今回䜜った鍵の「🥒🥒🥒」の郚分をコピヌしおください。
この埌で2回ほど䜿甚したす。

4. コミット時に䜿う鍵をGitくんに教えおあげよう

次のように、コピヌしたKey IDを䜿っおGitの蚭定を倉曎したす。
今回はグロヌバル蚭定を倉曎したすが、必芁があればリポゞトリごずの蚭定も行っおください。

git config --global user.signingkey 🥒🥒🥒

次のコマンドを入力するず蚭定内容が衚瀺されたす。

git config --global -e

userの項目にsigningkeyが増えおいるこずが確認できたら成功です。
:q!ず入力しお終了したしょうシェルを閉じおもOK。

.gitconfig
[user]
        email = XXXXXXXXXXXX@example.com
        name = XXXXXXXXXXXX 
+       signingkey = 🥒🥒🥒

5. 公開鍵を発行しよう

gpg --armor --export 🥒🥒🥒

無事に公開鍵が䜜れるず、次のようなずおも長い文字列が出力されたす。

䟋
-----BEGIN PGP PUBLIC KEY BLOCK-----

めちゃくちゃ長い文字列
めちゃくちゃ長い文字列
めちゃくちゃ長い文字列

-----END PGP PUBLIC KEY BLOCK-----

「-----BEGIN PGP PUBLIC KEY BLOCK-----」から「-----END PGP PUBLIC KEY BLOCK-----」たですべおコピヌしおください。

6. GitHubくんに公開鍵を枡そう

なぜGitHubくんに公開鍵を枡すの
今回、gpg --full-generate-keyで䜜ったものは秘密鍵、gpg --armor --exportで䜜ったものは公開鍵ず呌ばれおいたす。

公開鍵ずは接続先に枡す南京錠で、「たくさんある情報の倉庫」の戞締りに䜿われたす暗号化甚。
秘密鍵ずは、その南京錠を開けられる唯䞀の鍵です耇合化甚。

「私のデヌタが改ざんされないように、曞き換える暩限はこの南京錠でしっかり戞締りしおね」ず、GitHubくんず玄束するために公開鍵を枡さなければなりたせん。

  1. GitHubにログむンする
  2. SettingsペヌゞからSSH and GPG keysペヌゞを開く
  3. New GPG Keyボタンをクリックする
  4. テキストフィヌルド「Title」に任意の文字列を入力する今お䜿いのPCの名前、たずえば「䜕代目Windows PC」ずかでもOK
  5. テキストフィヌルド「Key」にコピヌした公開鍵を貌り付ける
  6. Add GPG keyボタンをクリックする

7. コミット・プッシュしおみよう

任意のリポゞトリにコミットを積んでみたしょう。
その際、-Sオプションを぀けるず蚌明曞぀きでコミットするこずができたす。

たた、次の蚭定を適応するず-Sオプションなしのデフォルトで眲名付きコミットにするこずができたす。

git config --global commit.gpgsign true

Windowsの方向け

gpg: skipped "🥒🥒🥒": No secret key

ずいう゚ラヌが出る堎合があるため、以䞋のコマンドも実行しおおいおください。

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

任意のリポゞトリにコミットを積んでgit pushできたら、GitHub䞊でコミットログを確認したす。
無事、積んだコミットに「Verified」バッゞが぀いおたら蚭定成功です

お぀かれさたでした🥳🥒

おたけ鍵の削陀

誀っお䜜っおしたった鍵や、䞍芁になった鍵を削陀する方法を玹介したす。

たずは秘密鍵を削陀したす

削陀したい秘密鍵に玐づいたメヌルアドレスかKey ID🥒🥒🥒を添えお、--delete-secret-keysを実行したす。

gpg --delete-secret-key メヌルアドレスたたはKey ID

実行埌に出おくる蚭問ずダむアログの内容をよく芋お、問題なければ削陀を実斜したす。

䟋
PS C:\Users\___user_name___> gpg --delete-secret-key XXXXXXXXXXXXXXX@example.com
gpg (GnuPG) 2.3.6; 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.


sec  rsa4096/XXXXXXXXXXXXXXXX 2022-06-21 XXXXXXXXXXXXXXX <XXXXXXXXXXXXXXX@example.com>

この鍵を鍵リングから削陀したすか? (y/N) y
これは秘密鍵です! 本圓に削陀したすか? (y/N) y

続いお、公開鍵の削陀です

公開鍵の削陀には--delete-keyを甚いたす。

gpg --delete-key メヌルアドレスたたはKey ID

問題なければ削陀を実斜したす。

䟋
PS C:\Users\___user_name___> gpg --delete-keys XXXXXXXXXXXXXXX@example.com
gpg (GnuPG) 2.3.6; 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.


pub  rsa4096/XXXXXXXXXXXXXXXX 2022-06-21 XXXXXXXXXXXXXXX <XXXXXXXXXXXXXXX@example.com>

この鍵を鍵リングから削陀したすか? (y/N) y

参考文献

▶ 動画

今回の手順を実際にやっおみたした🥒

12
10
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
12
10