서명된 커밋
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
커밋에 디지털 서명을 추가하면 사칭자가 아닌 본인으로부터 커밋이 온 것임을 추가로 보증합니다. 서명된 커밋과 검증된 커밋의 차이점을 이해하는 것이 중요합니다: GitLab이 공개 키로 커미터의 신원을 확인할 수 있으면 커밋은 GitLab UI에서 Verified로 표시됩니다.
커밋에 디지털 서명을 추가하면 사칭자가 아닌 본인으로부터 커밋이 온 것임을 추가로 보증합니다. 디지털 서명은 신뢰성을 확인하는 데 사용되는 암호화 출력입니다.
서명된 커밋과 검증된 커밋의 차이점을 이해하는 것이 중요합니다:
- 서명된 커밋에는 커밋의 무결성과 신뢰성을 증명하는 암호화 서명이 첨부되어 있습니다. 서명은 개인 키를 사용하여 만들어집니다.
- 검증된 커밋은 GitLab이 사용자의 GitLab 프로필에 저장된 알려진 공개 키로 유효성을 검사할 수 있는 서명이 있는 커밋입니다.
GitLab이 공개 키로 커미터의 신원을 확인할 수 있으면 커밋은 GitLab UI에서 Verified로 표시됩니다.
커미터와 작성자 필드는 Git에서 별개입니다. 작성자는 커밋을 작성하고 커미터는 이를 적용합니다. 커밋 서명은 커미터의 신원만 확인합니다.
GitLab은 다음 커밋 서명 방법을 지원합니다:
커밋 확인#
머지 리퀘스트 또는 전체 프로젝트의 커밋을 검토하고 서명 여부를 확인하려면:
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
커밋을 검토하려면:
- 프로젝트의 경우 Code > Commits를 선택합니다.
- 머지 리퀘스트의 경우:
- 왼쪽 사이드바에서 Code > Merge requests를 선택한 다음 머지 리퀘스트를 선택합니다.
- Commits를 선택합니다.
-
검토할 커밋을 식별합니다. 서명의 확인 상태에 따라 서명된 커밋은 Verified 또는 Unverified 배지를 표시합니다.

서명되지 않은 커밋은 배지를 표시하지 않습니다.
-
커밋의 서명 세부 정보를 보려면 Verified 또는 Unverified를 선택하여 지문 또는 키 ID를 확인합니다:


또한 커밋 API 사용하여 커밋의 서명을 확인할 수 있습니다.
Web UI 커밋 확인#
GitLab은 SSH를 사용하여 웹 UI를 통해 만들어진 커밋에 서명합니다. 이러한 커밋을 로컬에서 확인하려면 웹 커밋 API를 사용하여 웹 커밋 서명을 위한 GitLab 공개 키를 가져옵니다.
서명된 커밋의 Mailmap 이메일 감지#
히스토리
- GitLab 17.5에서
check_for_mailmapped_commit_emails라는 플래그와 함께 도입됨. 기본적으로 비활성화. - GitLab 18.9에서 GitLab.com에서 활성화됨.
이 기능의 가용성은 기능 플래그로 제어됩니다.
자세한 내용은 기록을 참조하세요.
이 플래그는 mailmap 감지를 위한 인프라를 활성화합니다. 전체 mailmap 지원은
추가 구성이 필요하며 아직 기본적으로 활성화되지 않습니다.
검증된 서명된 커밋의 커미터 이메일이 서명 사용자에게 더 이상 확인되지 않으면 GitLab은 경고 표시(⚠️ Verified)가 있는 주황색 검증 배지를 표시합니다.
다음과 같은 경우에 발생할 수 있습니다:
- 커미터 이메일이 사용자의 확인된 이메일에서 제거된 경우.
.mailmap파일이 커미터 이메일을 서명 사용자가 확인하지 않은 주소로 재매핑하는 경우.
녹색 Verified 배지를 복원하려면 커미터 이메일 주소를 GitLab 프로필에 추가하고 확인합니다.
푸시 규칙으로 서명된 커밋 적용#
푸시 규칙을 사용하여 프로젝트 전반에 서명된 커밋을 요구할 수 있습니다. Reject unsigned commits 푸시 규칙은 서명되지 않은 모든 커밋이 저장소에 푸시되는 것을 방지하여 조직이 코드 무결성을 유지하고 규정 준수 요구 사항을 충족하는 데 도움이 됩니다.
이 규칙의 작동 방식과 제한 사항에 대한 자세한 내용은 서명된 커밋 요구를 참조하세요.
트러블슈팅#
서명된 커밋의 확인 문제 수정#
GPG 키 또는 X.509 인증서로 서명된 커밋의 확인 프로세스는 여러 이유로 실패할 수 있습니다:
| 값 | 설명 | 가능한 수정 방법 |
|---|---|---|
UNVERIFIED |
커밋 서명이 유효하지 않습니다. | 유효한 서명으로 커밋에 서명합니다. |
SAME_USER_DIFFERENT_EMAIL |
커밋에 서명하는 데 사용된 GPG 키에 커미터 이메일이 포함되어 있지 않지만 커미터의 다른 유효한 이메일이 포함되어 있습니다. | GPG 키와 일치하는 이메일 주소를 사용하도록 커밋을 수정하거나 이메일 주소를 포함하도록 GPG 키를 업데이트합니다. |
OTHER_USER |
서명과 GPG 키는 유효하지만 키가 커미터가 아닌 다른 사용자에게 속합니다. | 올바른 이메일 주소를 사용하도록 커밋을 수정하거나 사용자에 연결된 GPG 키를 사용하도록 커밋을 수정합니다. |
UNVERIFIED_KEY |
GPG 서명과 관련된 키에 커미터와 연관된 확인된 이메일 주소가 없습니다. | GitLab 프로필에 이메일을 추가하고 확인하거나, 이메일 주소를 포함하도록 GPG 키를 업데이트하거나, 다른 커미터 이메일 주소를 사용하도록 커밋을 수정합니다. |
UNKNOWN_KEY |
이 커밋의 GPG 서명과 관련된 GPG 키가 GitLab에 알려져 있지 않습니다. | GitLab 프로필에 GPG 키를 추가합니다. |
MULTIPLE_SIGNATURES |
커밋에 대한 여러 GPG 또는 X.509 서명이 발견되었습니다. | 하나의 GPG 또는 X.509 서명만 사용하도록 커밋을 수정합니다. |
