What is Git GPG ?

จากรูปด้านบนจะเห็นว่า มีคำว่า Verified ด้านหลังซึ่งมันดู เท่มากๆ แล้วก็ทำให้เราสามารถยืนยันได้อีกว่าคนที่มา Contribute คนนี้คือเจ้าของ account จริงๆ แล้วถ้าอยากทำได้แบบนี้บ้าง ต้องทำยังไง เราไปดูกันเลยดีกว่าครับ


1. Install & Generate GPG

ทำการดาวน์โหลดและติดตั้ง จาก link นี้ GnuPG

$ gpg --full-gen-key

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1

What keysize do you want? (2048) 4096
Key is valid for? (0) 1y

Real name: JoJo
Email address: [email protected]
Comment:
You selected this USER-ID:
    "JoJo <[email protected]>"

ทำการเลือก

  1. Your selection? : 1
  2. What keysize do you want? (2048) : 4096
  3. Key is valid for? : 1y (หรือเลือกว่า key จะหมดอายุเมื่อไหร่ ตามต้องการ 0 คือไม่มีหมดอายุ)
  4. Real name: ใส่ชื่อเรา
  5. Email address : ใส่ email

จากนั้นทำการใส่ Passphrase เพื่อตั้งค่ารหัสผ่าน และ GPG จะทำการ generate key ให้เรา

ต่อมาทำการ copy GPG Key ID ด้วยคำสั่ง

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

จะได้รายการ ประมาณด้านล่างนี้ เราจะดูตรงบรรทัด sec rsa4096/ ให้เอาค่า ID หลักจากนี้มา

sec   rsa4096/4D12345678901234 2023-01-31 [SC] [expires: 2024-01-31]
      DE1234CE123B1234567890ABCDEFG1234567890A
uid                 [ultimate] JoJo <[email protected]>
ssb   rsa4096/BC12345678909123 2023-01-31 [E] [expires: 2024-01-31]

ซึ่งจากค่าด้านบน GPG ID คือ 4D12345678901234

ทำการ Export GPG ID ด้วยคำสั่ง

$ gpg --armor --export 4D12345678901234

เราจะได้ GPG Key หน้าตาประมาณนี้

-----BEGIN PGP PUBLIC KEY BLOCK-----
xxx
xxx
xxx
-----END PGP PUBLIC KEY BLOCK-----

2. Add GPG to Github

Step ต่อมา หลักจากที่เราได้ GPG แล้ว ก็ให้ทำการเพิ่มไปที่ Github ก็เข้าไปที่

My Accounts => Settings ตรงแท้ป Personal settings เลือกที่ SSH and GPG keys

เพิ่ม GPG key โดย copy ที่เรา export มาใส่

3. Commit with Verified

ต่อมา เราต้อง config git ให้รู้ว่า GPG ที่เราจะใช้คืออะไรด้วยคำสั่ง

$ git config --global user.signingkey <ใส่ GPG key>

สำหรับการ commit แล้วให้ทุกๆการ commit มีการ sign GPG อัตโนมัติ ทำได้แบบ global คือคำสั่ง (คือบอกว่าทุกๆ commit จะใช้ GPG นะ แล้วพอใช้ GPG มันก็จะไปหา signingkey ที่เรา config ไว้นั่นเอง)

$ git config commit.gpgsign true

Note: เงื่อนไขการ sign คือ Email ของ Github กับ email ที่เราทำการ generate GPG ต้องเป็นเมล์เดียวกัน (Gitlab และ Bitbucket ก็เช่นกัน)

ปล. ถ้าใช้ sourcetree อยู่เราสามารถกำหนดได้ง่ายๆโดยไปที่ Repository Settings แล้วเลือกไปที่ Security ทำการ Enable GPG key signing for commits แล้วเลือก key ที่เรา generate เป็นอันเสร็จสิ้น

Leave a Reply

Your email address will not be published. Required fields are marked *