X.509 인증서로 커밋 및 태그 서명
GitLab 저장소의 커밋과 태그에 X.509 인증서로 서명합니다.
X.509 는 공공 또는 사설 공개 키 인프라(PKI)에서 발급하는 공개 키 인증서의 표준 형식입니다. 개인 X.509 인증서는 S/MIME(Secure/Multipurpose Internet Mail Extensions)과 같은 인증 또는 서명 목적으로 사용됩니다. 그러나 Git은 GPG (GnuPG, 또는 GNU Privacy Guard) 와 유사한 방식으로 X.509 인증서를 사용한 커밋 및 태그 서명도 지원합니다. 주요 차이점은 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의 인증서를 사용하는 것을 권장합니다. 사용자 지정 인증기관(CA) 업로드 는 GitLab Self-Managed에서만 가능하므로 GitLab SaaS 제품에서는 Verified 배지가 표시되지 않습니다. Digital Signature 의 필수 키 사용(KU) 외에 인증서의 확장 키 사용(EKU) 섹션에 값을 설정하면 커밋이 Unverified 로 표시될 수 있습니다. 이를 해결하려면 EKU 목록에 emailProtection 을 추가합니다. RFC 5280이 이 제한 사항을 명시합니다. 진단하려면 OpenSSL을 사용한 S/MIME 확인 을 따릅니다. GitLab 16.2 이하에서 서명 인증서의 Subject Alternative Name 목록에 이메일이 두
