มา Commit Git ให้ขึ้น Verify เท่ๆกันดีกว่า
หากใครเคยลองอ่าน Commit History ใน Github, Gitlab หรือว่า Bitbucket จะเห็นว่าจะมีคำว่า Verified ต่อท้ายของ Commit เรา ละมันคืออะไร? เอาไว้ทำอะไร? และสามารถทำได้ยังไง?
วันนี้มาแนะนำ วิธีการทำ Verify เท่ๆกันครับ มันคือการ Verify GPG นั่นเอง ข้อดีคือมันถูก Verify จริงๆว่า Commit นั้นมาจากเรานะ วิธีการทำก็ไม่ยาก จริงๆมีเขียนไว้ในแต่ Provider อยู่แล้ว
TLDR
แบบรวบรัด
สำหรับคนต้องการวิธีการทำแบบยาวๆ ก็เริ่มจาก ติดตั้ง และ Generate GPG ID เลย
1. Install & Generate GPG
ทำการดาวน์โหลดและติดตั้ง จาก link นี้ GnuPG
ทำการเลือก
Your selection?
: 1What keysize do you want? (2048)
: 4096Key is valid for?
: 1y (หรือเลือกว่า key จะหมดอายุเมื่อไหร่ ตามต้องการ 0 คือไม่มีหมดอายุ)Real name
: ใส่ชื่อเราEmail address
: ใส่ email
จากนั้นทำการใส่ Passphrase เพื่อตั้งค่ารหัสผ่าน และ GPG จะทำการ generate key ให้เรา
ต่อมาทำการ copy GPG Key ID ด้วยคำสั่ง
จะได้รายการ ประมาณด้านล่างนี้ เราจะดูตรงบรรทัด sec rsa4096/
ให้เอาค่า ID หลักจากนี้มา
ซึ่งจากค่าด้านบน GPG ID คือ 4D12345678901234
ทำการ Export GPG ID ด้วยคำสั่ง
เราจะได้ GPG Key หน้าตาประมาณนี้
2. Add GPG to Github, Bicbucket or Gitlab
Step ต่อมา หลักจากที่เราได้ GPG แล้ว ก็ให้ทำการเพิ่มไปที่ Service Provider ต่างๆ อย่างเช่น Github ก็เข้าไปที่
My Accounts => Settings ตรงแท้ป Personal settings เลือกที่ SSH and GPG keys
จากนั้นทำการเพิ่ม GPG Key โดย ก็อปปี้ไอ้ก้อน GPG ที่เรา export มาตอนแรก มาใส่
3. Commit with Verified
ต่อมา เราต้อง config git ให้รู้ว่า GPG ที่เราจะใช้คืออะไรด้วยคำสั่ง
สำหรับการ commit แล้วให้ทุกๆการ commit มีการ sign GPG อัตโนมัติ ทำได้แบบ global คือคำสั่ง (คือบอกว่าทุกๆ commit จะใช้ GPG นะ แล้วพอใช้ GPG มันก็จะไปหา signingkey ที่เรา config ไว้นั่นเอง)
หรือการ Commit ก็ใช้คำสั่ง
Note: เงื่อนไขการ sign คือ Email ของ Github กับ email ที่เราทำการ generate GPG ต้องเป็นเมล์เดียวกัน (Gitlab และ Bitbucket ก็เช่นกัน)
หรือหากใครใช้ Sourcetree สามารถไปกำหนด ได้ที่ Repository Settings แล้วเลือกไปที่ Security ทำการ Enable GPG key signing for commits มันซะ เลือก key ที่เรา generate เป็นอันเรียบร้อย
คราวนี้เราก็จะมี Verified เท่ๆ แล้ว (ไม่รู้มันเท่จริงเปล่านะ ฮ่าๆ)
References
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust