มาเพิ่มความคูลให้กับ Git ของเราด้วยการ Sign Commit กันเถอะ!

🤔 ทำไมต้อง Sign?

แล้วเราจะมีวิธีแก้ไขปัญหานี้ยังไง?

  1. เจ้าตัวนำเอกสารของตัวเองไปแปลงเป็น hash ซะก่อน เพื่อเอาไว้ใช้ตรวจสอบว่าเอกสารเราต้องมีข้อมูลตามนี้เป๊ะ ๆ เพราะเมื่อไรก็ตามที่ข้อมูลถูกแก้ไข hash ก็จะเปลี่ยนแปลงไปนั่นเอง
  2. จากนั้นก็เข้ารหัส hash นั่นด้วย Private Key ของเราเอง เหมือนเป็นการลงลายเซ็นเราเอาไว้ (Sign) ว่าฉันเป็นคนเขียนเองนะ ฉันเป็นคนถือกุญแจดอกนี้เอง แล้วส่งเอกสารนั้นไปพร้อมกับ hash ที่เข้ารหัสไว้
  3. ฝ่ายรับสารก็ใช้ Public Key ที่เราให้ไว้มาแกะ hash ที่ถูกเข้ารหัสไว้ แล้วนำมาตรวจสอบกับข้อมูลที่ได้รับมาว่า hash ตรงมั้ย? ถ้า hash ตรงก็เป็นอันใช้ได้ ก็ถือว่าข้อมูลที่ได้รับมาเป็นของเราจริง
Illustration of digital signature

⚙️ ตั้งค่า GPG

$ gpg --version
$ gpg --import public.key
$ gpg --import private.key
$ gpg --full-generate-key
  1. ประเภท key เลือก 4 (RSA (sign only))
  2. keysize ให้ใส่ 4096 (ตามที่ GitHub บังคับ)
  3. ตั้งค่าวันหมดอายุ key (ใส่ 0 ไม่มีวันหมดอายุ)
  4. จากนั้นก็กรอก username ของ GitHub และ Email (แนะนำให้ใช้เมล noreply ที่ GitHub สร้างให้เพื่อความเป็นส่วนตัว)
$ gpg --list-secret-keys --keyid-format=long

⚙️ ตั้งค่า Git

$ git config --global user.signingkey 836DC51A914B8921
$ git config --global commit.gpgsign true

⚙️ ตั้งค่า GitHub

-----BEGIN PGP PUBLIC KEY BLOCK-----
...บลา บลา บลา...
-----END PGP PUBLIC KEY BLOCK-----
หน้าตาช่องใส่ Public Key
เมื่อกรอกเสร็จแล้วจะได้หน้าตาประมาณนี้ (ตัวอย่าง)

⚙️ ตั้งค่า VS Code

$ git commit -S -m "your commit message"
"git.enableCommitSigning": true

✨ จบปิ๊ง ✨

REF:

--

--

I am who I am.

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store