امضای کامیت‌ها با GPG — نشان Verified

امضای دیجیتال کامیت‌ها و تگ‌ها با GPG تا گیت‌هاب نشان Verified بدهد — اثبات هویت حرفه‌ای.

چرا امضا کنیم؟

هر کسی می‌تواند در git config هر نام و ایمیلی بگذارد و کامیت بزند — انگار شما بوده! امضای دیجیتال با GPG این مشکل را حل می‌کند: گیت‌هام امضای شما را تأیید می‌کند و نشان Verified (تأییدشده ✅) کنار کامیت می‌گذارد.

GPG چیست؟

GPG (GNU Privacy Guard) ابزار استاندارد رمزنگاری کلید عمومی/خصوصی است — همان مفهومی که در SSH دیدید:

قدم ۱: ساخت کلید GPG

gpg --full-generate-key

به سؤال‌ها جواب بدهید:

  1. نوع کلید: (1) RSA and RSA — Enter
  2. طول کلید: 4096
  3. مدت اعتبار: 0 = بدون انقضا — Enter و y
  4. نام: نام واقعی‌تان
  5. ایمیل: دقیقاً ایمیل گیت‌هاب‌تان!
  6. رمز (passphrase): یک رمز برای کلید — یادتان بماند

قدم ۲: گرفتن کلید عمومی

# لیست کلیدها:
gpg --list-secret-keys --keyid-format=long
# sec   rsa4096/ABCDEF1234567890 2026-01-15 [SC]
#      ↑ این بخش (بعد از اسلش) شناسه کلید است

# نمایش کلید عمومی برای کپی:
gpg --armor --export ABCDEF1234567890

خروجی بین -----BEGIN PGP PUBLIC KEY BLOCK----- و -----END... را کپی کنید.

قدم ۳: افزودن به گیت‌هاب

  1. Settings → SSH and GPG keys
  2. New GPG key
  3. Paste و Add GPG key

قدم ۴: تنظیم گیت

# معرفی کلید به گیت:
git config --global user.signingkey ABCDEF1234567890

# امضای همه کامیت‌ها به‌صورت خودکار:
git config --global commit.gpgsign true

قدم ۵: کامیت امضاشده!

git commit -m "کامیت مهم و امن"
# (رمز کلید را می‌پرسد)

git push

در گیت‌هاب کنار کامیت: Verified ✅

امضای تگ‌ها

git tag -s v1.0 -m "نسخه رسمی ۱.۰"

سوئیچ -s (به‌جای -a) تگ را امضا می‌کند — برای releaseهای رسمی مهم است.

بررسی امضاها

# بررسی امضای یک کامیت:
git verify-commit HEAD

# بررسی امضای تگ:
git verify-tag v1.0

# دیدن امضا در log:
git log --show-signature -1

SSH Signing — روش جدیدتر

از گیت ۲.۳۴ می‌توان به‌جای GPG از همان کلید SSH برای امضا استفاده کرد (ساده‌تر!):

git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub

و کلید عمومی را در گیت‌هاب به‌عنوان Signing Key اضافه کنید.

خلاصه

این مبحث بخشی از دوره آموزش کامل Git است.

ابزارهای مرتبط