GPG로 Git 커밋을 검증하는 방법: 단계별 가이드
Source: Dev.to

오픈소스와 협업 개발 세계에서는 정체성이 전부입니다. 리눅스 커널에서 torvalds의 커밋을 볼 때, 그것이 실제 리누스 토르발스인지, 아니면 사칭자인지 어떻게 알 수 있을까요?
답은 GPG 서명입니다.
GPG(GNU Privacy Guard) 키로 커밋에 서명하면, 해당 코드가 본인으로부터 왔으며 변조되지 않았음을 암호학적으로 검증할 수 있습니다. GitHub(및 GitLab)은 이를 녹색 “Verified” 배지로 표시해 줍니다.
1. Install GPG
macOS (Homebrew)
brew install gnupg
Linux (Debian/Ubuntu/Pop!_OS)
sudo apt install gnupg
Windows
**Gpg4win**을 다운로드하고 설치합니다.
2. Generate a GPG Key
gpg --full-generate-key
다음 항목들을 입력하라는 프롬프트가 나타납니다:
- 키 종류:
(1) RSA and RSA(기본값) - 키 크기:
4096 - 만료 기간:
0(키가 만료되지 않음) – 정책에 따라 조정하세요 - 실명: 전체 이름 입력
- 이메일 주소: GitHub에서 인증된 이메일과 일치해야 함
- 암호구문: 개인 키를 보호할 강력한 비밀번호
3. Get Your Key ID
비밀 키를 나열하여 긴 형식의 Key ID를 확인합니다:
gpg --list-secret-keys --keyid-format LONG
예시 출력:
sec rsa4096/3AA5C34371567BD2 2024-01-01 [SC]
…
uid [ultimate] John Doe
위 예시에서 **3AA5C34371567BD2**가 사용할 Key ID입니다.
4. Tell Git About Your Key
전역으로 서명 키를 설정합니다:
git config --global user.signingkey 3AA5C34371567BD2
(3AA5C34371567BD2를 실제 Key ID로 교체하세요.)
모든 커밋에 자동 서명을 활성화합니다(권장):
git config --global commit.gpgsign true
5. Add Your Public Key to GitHub
-
공개 키를 내보냅니다:
gpg --armor --export 3AA5C34371567BD2 -
BEGIN과END라인을 포함한 전체 출력을 복사합니다. -
GitHub에서 Settings → SSH and GPG keys → New GPG key 로 이동해 키를 붙여넣고 저장합니다.
6. Verify It Works
서명된 커밋을 생성합니다:
git commit -m "My first signed commit"
커밋을 GitHub에 푸시하면, 리포지토리 히스토리에서 커밋 옆에 Verified 배지가 표시됩니다.

Troubleshooting
- “Unverified” 배지:
git config user.email에 설정된 이메일이 GPG 키에 포함된 이메일과 일치하는지, 그리고 해당 이메일이 GitHub 계정 설정에서 인증되었는지 확인하세요.