X.509 인증서로 커밋 및 태그 서명
GitLab 저장소의 커밋과 태그에 X.509 인증서로 서명합니다.
X.509 는 공공 또는 사설 공개 키 인프라(PKI)에서 발급하는 공개 키 인증서의 표준 형식입니다. 개인 X.509 인증서는 S/MIME(Secure/Multipurpose Internet Mail Extensions)과 같은 인증 또는 서명 목적으로 사용됩니다. 그러나 Git은 X.509 인증서로 커밋과 태그에 서명하는 것도 GPG (GnuPG, or GNU Privacy Guard) 와 유사한 방식으로 지원합니다. 주요 차이는 GitLab이 개발자의 서명을 신뢰할 수 있는지 판단하는 방식입니다: X.509의 경우 루트 인증기관이 GitLab 신뢰 저장소에 추가됩니다. (신뢰 저장소는 신뢰할 수 있는 보안 인증서를 모아 둔 저장소입니다.) 서명에 포함된 필요한 중간 인증서와 결합하면 개발자의 인증서를 신뢰할 수 있는 루트 인증서까지 체인으로 연결할 수 있습니다. GPG의 경우 개발자가 자신의 계정에 GPG 키를 추가 합니다. GitLab은 자체 인증서 저장소를 사용하므로 신뢰 체인 을 직접 정의합니다. GitLab이 커밋 또는 태그를 확인하려면 다음 조건을 충족해야 합니다: 서명 인증서의 이메일이 GitLab에서 확인된 이메일 주소와 일치해야 합니다. GitLab 인스턴스에는 서명의 인증서에서 GitLab 인증서 저장소의 신뢰할 수 있는 인증서까지 이어지는 전체 신뢰 체인이 필요합니다. 이 체인에는 서명에 제공된 중간 인증서가 포함될 수 있습니다. 인증기관 루트 인증서와 같은 인증서를 GitLab 인증서 저장소에 추가 해야 할 수 있습니다. 서명 시간은 보통 최대 3년인 인증서 유효 기간 안에 있어야 합니다. 서명 시간은 커밋 시간과 같거나 그 이후입니다. Note 신뢰 체인의 루트 CA 또는 중간 인증서가 만료되어 갱신되면, 커밋을 재확인 할 때까지 커밋이 일시적으로 "unverified"로 표시될 수 있습니다. 커밋 상태가 이미 결정되어 데이터베이스에 저장된 경우에는 Rake 태스크로 상태를 다시 점검 합니다. GitLab은 백그라운드 워커로 매일 인증서 해지 목록을 점검합니다. 알려진 문제 # authorityKeyIdentifier , subjectKeyIdentifier , crlDistributionPoints 가 없는 인증서는 Unverified 로 표시됩니다. RFC 5280 에 부합하는 PKI에서 발급한 인증서를 사용하는 것을 권장합니다. Verified 배지는 GitLab.com 제품에서는 표시되지 않습니다. 사용자 지정 인증기관(CA) 업로드 가 GitLab Self-Managed에서만 가능하기 때문입니다. 필수 키 사용(KU)인 Digital Signature 외에 인증서의 확장 키 사용(EKU) 섹션에 값을 설정하면 커밋이 Unverified 로 표시될 가능성이 높습니다. 이를 해결하려면 EKU 목록에 emailProtection 을 추가합니다. RFC 5280이 이 제한 사항을 명시합니다. 진단하려면 OpenSSL을 사용한 S/MIME 확인 을 따릅니다. GitLab 16.2 이하에서 서명 인증서의 Subj