Devahoy Logo
PublishedAt

Web Development

มา Commit Git ให้ขึ้น Verify เท่ๆกันดีกว่า

มา Commit Git ให้ขึ้น Verify เท่ๆกันดีกว่า

หากใครเคยลองอ่าน Commit History ใน Github, Gitlab หรือว่า Bitbucket จะเห็นว่าจะมีคำว่า Verified ต่อท้ายของ Commit เรา ละมันคืออะไร? เอาไว้ทำอะไร? และสามารถทำได้ยังไง?

วันนี้มาแนะนำ วิธีการทำ Verify เท่ๆกันครับ มันคือการ Verify GPG นั่นเอง ข้อดีคือมันถูก Verify จริงๆว่า Commit นั้นมาจากเรานะ วิธีการทำก็ไม่ยาก จริงๆมีเขียนไว้ในแต่ Provider อยู่แล้ว

TLDR

แบบรวบรัด

1
$ gpg --full-gen-key
2
$ gpg --list-secret-keys --keyid-format LONG
3
$ gpg --armor --export GPG_ID_KEY
4
5
6
$ git config --global user.signingkey GPG_KEY
7
$ git config --global commit.gpgsign true

สำหรับคนต้องการวิธีการทำแบบยาวๆ ก็เริ่มจาก ติดตั้ง และ Generate GPG ID เลย

1. Install & Generate GPG

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

Terminal window
$ 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: Devahoy
Email address: hello@devahoy.com
Comment:
You selected this USER-ID:
"Devahoy <hello@devahoy.com>"

ทำการเลือก

  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 ด้วยคำสั่ง

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

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

1
sec rsa4096/4D12345678901234 2017-12-31 [SC] [expires: 2019-12-31]
2
DE1234CE123B1234567890ABCDEFG1234567890A
3
uid [ultimate] Devahoy <devahoy@gmail.com>
4
ssb rsa4096/BC12345678909123 2017-12-31 [E] [expires: 2019-12-31]

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

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

1
gpg --armor --export 4D12345678901234

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

1
-----BEGIN PGP PUBLIC KEY BLOCK-----
2
xxx
3
xxx
4
xxx
5
-----END PGP PUBLIC KEY BLOCK-----

2. Add GPG to Github, Bicbucket or Gitlab

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

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

GPG 1

จากนั้นทำการเพิ่ม GPG Key โดย ก็อปปี้ไอ้ก้อน GPG ที่เรา export มาตอนแรก มาใส่

3. Commit with Verified

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

1
git config --global user.signingkey GPG_KEY

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

1
$ git config commit.gpgsign true

หรือการ Commit ก็ใช้คำสั่ง

1
$ git commit -S -m your commit message

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

หรือหากใครใช้ Sourcetree สามารถไปกำหนด ได้ที่ Repository Settings แล้วเลือกไปที่ Security ทำการ Enable GPG key signing for commits มันซะ เลือก key ที่เรา generate เป็นอันเรียบร้อย

คราวนี้เราก็จะมี Verified เท่ๆ แล้ว (ไม่รู้มันเท่จริงเปล่านะ ฮ่าๆ)

GPG 2

GPG 3

References

Authors
avatar

Chai Phonbopit

เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust

Related Posts