A guide on setting up GPG keys for Git
· 5 min read
🔹 Git 서명(GPG)을 사용하는 이유는?
Git에서 GPG(GNU Privacy Guard) 서명을 사용하는 이유는 커밋 및 태그의 신뢰성을 보장하고, 코드가 신뢰할 수 있는 사람에 의해 변경되었음을 증명하기 위해서입니다.
✅ 1. GPG 서명의 주요 목적
1) 커밋 및 태그의 신뢰성 검증
서명된 커밋은 "이 커밋이 실제로 내가 한 것이 맞다"는 것을 증명할 수 있습니다.
조직에서는 특정 개발자가 직접 승인한 코드인지 확인할 수 있습니다.
2) 코드 변경의 무결성 보장
GPG 서명을 통해 MITM 공격(중간자 공격)이나 악의적인 코드 변경을 방지할 수 있습니다.
GitHub와 같은 플랫폼에서는 서명되지 않은 커밋이 있을 경우, 해당 코드의 신뢰성을 의심할 수 있습니다.
3) GitHub, GitLab 등의 플랫폼에서 "Verified" 뱃지 표시
GitHub는 GPG 서명된 커밋에 대해 Verified 라벨을 붙여주며, 이는 신뢰할 수 있는 변경이라는 의미입니다.
미서명 커밋은 신뢰할 수 없거나, 변경자가 위조될 가능성이 있습니다.
GitHub 예시
✅ Verified - 서명된 커밋
❌ Unverified - 서명되지 않은 커밋
4) 조직 및 팀 내 코드 신뢰성 강화
기업이나 오픈소스 프로젝트에서는 GPG 서명을 필수적으로 요구하기도 합니다.
"이 커밋이 진짜 팀원이 한 것인지?"를 검증할 수 있는 중요한 요소입니다.
✅ 2. GPG 서명 없이도 코드 커밋이 가능한데, 꼭 필요할까?
개인 프로젝트에서는 필요하지 않을 수도 있습니다.
하 지만, 오픈소스 프로젝트, 보안이 중요한 환경, 기업 개발팀에서는 필수적으로 사용됩니다.
GitHub/GitLab 등의 플랫폼에서 보안 정책으로 서명을 강제할 수도 있음.
✅ 3. GPG 서명을 Git에 적용하는 방법
🔹 1) GPG 키 생성
gpg --full-generate-key
- 키 유형 선택 (RSA and RSA 추천)
- 키 크기 (4096 추천)
- 만료 날짜 설정
- 이름, 이메일 입력
🔹 2) GPG 공개 키 확인
gpg --list-secret-keys --keyid-format LONG
결과 예시
3AA5C34371567BD2
부분이 GPG 키 ID입니다.
🔹 3) Git에 GPG 서명 키 등록
git config --global user.signingkey 3AA5C34371567BD2
🔹 4) GPG 자동 서명 설정
git config --global commit.gpgSign true
- 이제 모든 커밋이 자동으로 GPG 서명됩니다.
🔹 5) GitHub에 GPG 공개 키 등록
gpg --armor --export 3AA5C34371567BD2
- 출력된 내용을 GitHub → Settings → SSH and GPG keys에 추가.
🔹 6) 서명된 커밋 만들기
git commit -S -m "서명된 커밋 메시지"
✅ 4. 결론: GPG 서명을 사용해야 할까?
🔹 필요한 경우
- 오픈소스 프로젝트에서 코드의 신뢰성을 보장하려는 경우
- 보안이 중요한 프로젝트에서 변경 내역을 검증해야 하는 경우
- 기업 개발팀이 서명된 커밋을 요구하는 경우
- GitHub에서 "Verified" 표시를 받고 싶은 경우
🔹 필요하지 않은 경우
- 개인 프로젝트이거나, GPG 서명을 관리하기 번거로운 경우
- 보안보다는 빠른 개발이 중요한 경우
결론
- 보안이 중요한 프로젝트라면 GPG 서명은 필수적이며, 신뢰할 수 있는 코드 변경을 보장하는 강력한 방법입니다!