omnibus-gitlab 패키지와 관련된 암호화에 대한 세부 정보

Tier: Free, Premium, Ultimate Offering: Self-Managed

GitLab은 다양한 OS 패키지를 제공하고, 이러한 패키지의 무결성을 보장하기 위해 packagecloud 인스턴스를 사용하며, 다양한 암호화 방법을 사용합니다. 이 페이지는 이러한 방법에 대한 세부 정보를 제공합니다.

패키지 저장소 메타데이터 서명 키

GitLab packagecloud 인스턴스의 apt 및 yum 저장소는 메타데이터를 서명하기 위해 GPG 키를 사용합니다. 이 키는 설치 지침에 지정된 리포지토리 설정 스크립트에 의해 자동으로 설치됩니다.

현재 키

키 속성
이름 GitLab B.V.
이메일 packages@gitlab.com
주석 패키지 저장소 서명 키
지문 F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
만료일 2026-02-27

이 키는 2020-04-06부터 활성화되었습니다. 기존 사용자 중 이미 GitLab apt/yum 패키지 리포지토리를 구성한 사용자는 해당 리포지토리에서 패키지를 계속 설치하려면 신뢰하는 키링에 이 키를 다시 가져와 추가해야 합니다. 아래에서 설명한 것처럼 apt/yum에서 불일치에 대해 불평할 수 있습니다.

이 키의 만료일이 2024-03-01에서 2026-02-27로 연장되었습니다. 2024-03-01에 만료 불평이 발생하면 만료 연장 후 키 업데이트 단계를 수행하여 업데이트된 공개 키 내용을 통합하세요.

만료 연장 후 키 업데이트

Debian 기반 배포판의 경우:

PackageCloud는 일반적으로 향후에 폐기될 apt-key를 사용했으며, 일부 배포판(TurnKey Linux 등)의 수동으로 설치하거나 구성된 리포지토리는 이미 Debian 패키지 소스 목록 내의 signed-by 지원을 사용하고 있습니다.

  1. apt-key 또는 signed-by 기능을 사용 중인지 확인하세요:

     grep 'deb \[signed-by=' /etc/apt/sources.list.d/gitlab_gitlab-?e.list
    
    • grep 명령이 반환된다면, signed-by 기능을 사용 중입니다. 이 기능은 apt-key 사용을 우선합니다.
    • grep 명령이 반환되지 않으면, apt-key 기능을 사용 중입니다.
  2. signed-by를 사용하는 경우, 다음 스크립트(루트로 실행)가 GitLab 리포지토리의 공개 키를 업데이트합니다:

     awk '/deb \[signed-by=/{
           pubkey = $2;
           sub(/\[signed-by=/, "", pubkey);
           sub(/\]$/, "", pubkey);
           print pubkey
         }' /etc/apt/sources.list.d/gitlab_gitlab-?e.list | \
       while read line; do
         curl -s "https://packages.gitlab.com/gpg.key" | gpg --dearmor > $line
       done
    
  3. apt-key를 사용하는 경우, 다음 스크립트(루트로 실행)가 GitLab 리포지토리의 공개 키를 업데이트합니다:

     apt-key del 3F01618A51312F3F
     curl -s "https://packages.gitlab.com/gpg.key" | apt-key add -
     apt-key list 3F01618A51312F3F
    

RPM 기반 배포판의 경우:

Yum 및 Dnf 간에는 약간의 차이가 있지만, 기본 구성은 동일합니다.

  1. 리포지토리 키링에서 기존 키를 제거합니다:

     for pubring in /var/cache/dnf/gitlab_gitlab-?e-*/pubring
     do
       gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F
     done
    
  2. 사용자에게 키 확인을 요청하는 리포지토리 데이터/캐시를 업데이트합니다:

     dnf check-update
    

2020-04-06 이전의 새 키 가져오기

# 새 키 다운로드
curl "https://gitlab-org.gitlab.io/omnibus-gitlab/gitlab_new_gpg.key" -o /tmp/omnibus_gitlab_gpg.key

# 키 가져오기
## Debian/Ubuntu/Raspbian
sudo apt-key add /tmp/omnibus_gitlab_gpg.key

# CentOS/OpenSUSE/SLES
sudo rpm --import /tmp/omnibus_gitlab_gpg.key

2020-04-06 이후의 새 키 가져오기

최신 저장소 서명 키를 가져오려면 사용자는 install page에 언급된대로 GitLab 리포지토리를 추가하는 curl 명령을 다시 실행할 수 있습니다. 이를 통해 새 키를 가져와 사용자의 키링에 추가합니다.

또는 사용자는 다음 명령을 사용하여 새 키를 수동으로 가져와 추가할 수 있습니다.

# 새 키 다운로드
curl "https://packages.gitlab.com/gpg.key" -o /tmp/omnibus_gitlab_gpg.key

# 키 가져오기

## Debian/Ubuntu/Raspbian
```shell
sudo apt-key add /tmp/omnibus_gitlab_gpg.key

CentOS/OpenSUSE/SLES

sudo rpm --import /tmp/omnibus_gitlab_gpg.key

이전 키

일련 번호 키 ID 만료 날짜
1 1A4C 919D B987 D435 9396 38B9 1421 9A96 E15E 78F4 2020-04-15

패키지 서명

이 문서는 GitLab이 생성한 패키지의 서명을 수동 및 자동으로 확인하는 방법을 제공합니다.

RPM 기반 배포

RPM 형식에는 GPG 서명 기능의 완전한 구현이 포함되어 있으므로, 해당 형식을 기반으로 한 패키지 관리 시스템과 완벽하게 통합됩니다. 확인 방법은 두 가지입니다.

GitLab 공개 키의 존재 여부 확인

RPM 기반 배포에서 패키지를 확인하려면 rpm 도구의 키체인에 GitLab, Inc. 공개 키가 있는지 확인해야 합니다.

rpm -q gpg-pubkey-f27eab47-60d4a67e --qf '%{name}-%{version}-%{release} --> %{summary}'

위 명령은 공개 키에 관한 정보 또는 gpg-pubkey-f27eab47-60d4a67e is not installed을 출력합니다. 키가 존재하지 않는 경우, 다음 단계를 수행하십시오.

rpm --import https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg

서명 확인 활성화 여부 확인

기존 설치에서 패키지 서명 확인이 활성화된 상태인지 확인하는 가장 간단한 방법은 사용 중인 저장소 파일의 내용을 비교하는 것입니다.

  • 저장소 파일의 존재 여부 확인: file /etc/yum.repos.d/gitlab_gitlab-ce.repo
  • 서명 확인이 활성화되어 있는지 확인: grep gpgcheck /etc/yum.repos.d/gitlab_gitlab-ce.repo를 입력하여 다음과 같은 결과가 나와야 합니다.

    repo_gpgcheck=1
    gpgcheck=1
    

    또는

    repo_gpgcheck=1
    pkg_gpgcheck=1
    

파일이 없으면 해당 저장소가 설치되지 않았습니다. 파일이 있지만 출력이 gpgpcheck=0으로 나오면 이 값을 활성화하도록 아래와 같이 수정해야 합니다.

자동 확인 활성화

rpm 도구 및 관련 패키지 관리자(yum,zypper)는 개입 없이 패키지를 자동으로 확인하는 기능을 직접 지원합니다. 서명된 패키지가 제공되기 전에 자동 저장소 구성 스크립트를 사용했다면 추가 단계가 필요 없습니다. 서명된 패키지가 제공되기 전에 설치한 경우, 필요한 변경 사항을 수행하거나 설치 페이지에서 찾을 수 있는 자동 저장소 구성 스크립트를 다시 실행할 수 있습니다.

Yum (RedHat, CentOS)
  1. 패키지의 GPG 확인을 활성화합니다.

    sudo sed -i'' 's/^gpgcheck=0/gpgcheck=1/' /etc/yum.repos.d/gitlab_gitlab-ce.repo
    
  2. 패키지 서명 공개 키를 gpgkey 목록에 추가합니다: /etc/yum.repos.d/gitlab_gitlab-ce.repo를 편집하여 gpgkey가 다음과 같이 나타나도록 수정합니다:

    gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
            https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  3. 저장소의 캐시를 새로 고치도록 yum에 지시합니다.

    sudo yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce'
    
Zypper (SuSE/SLES)
  1. 패키지의 GPG 확인을 활성화합니다.

    sudo sed -i'' 's/pkg_gpgcheck=0/pkg_gpgcheck=1/' /etc/zypp/repos.d/gitlab_gitlab-ce.repo
    
  2. 패키지 서명 공개 키를 gpgkey 목록에 추가합니다: /etc/zypp/repos.d/gitlab_gitlab-ce.repo를 편집하여 gpgkey가 다음과 같이 나타나도록 수정합니다:

    gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
            https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  3. 저장소를 새로 고치고 키를 가져오도록 zypper에 지시합니다.

    sudo zypper --gpg-auto-import-keys refresh gitlab_gitlab-ce
    

수동 확인

공개 키가 확인된 후에는 RPM 패키지를 rpm --checksig gitlab-xxx.rpm 명령어로 수동으로 확인할 수 있습니다.

DEB 기반 배포

DEB 형식에는 패키지에 서명하는 기본적으로 포함된 방법이 공식적으로 없습니다. GitLab에서는 대부분의 배포판에서 기본적으로 활성화되어 있지 않지만 잘 문서화된 debsig 표준을 구현하기로 선택했습니다.

수동 확인

debsigs로 서명된 DEB 패키지의 수동 확인은 두 가지 방법으로 수행할 수 있습니다. 필요한 debsigs 정책 및 키링을 구성한 후 debsig-verify를 사용하거나 GnuPG로 포함된 _gpgorigin 파일을 수동으로 확인하는 방법입니다.

GnuPG로 수동 확인

debsig-verify 패키지에는 사용자가 원치 않을 수 있는 다수의 의존성이 있습니다. debsig-verify 및 해당 의존성을 설치하지 않고도 debsigs 기반 서명을 확인하려면 사용자는 다음과 같은 수동 단계를 완료할 수 있습니다:

  1. 패키지 서명 공개 키를 다운로드하고 가져오기

    curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg"
    gpg --import gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
    
  2. 서명 파일 (_gpgorigin) 추출

    ar x gitlab-ce-xxx.deb _gpgorigin
    
  3. 서명이 내용과 일치하는지 확인

    ar p gitlab-xxx.deb debian-binary control.tar.gz data.tar.gz | gpg --verify _gpgorigin -
    

최종 명령의 출력은 다음과 같아야 합니다:

$ ar p gitlab-xxx.deb debian-binary control.tar.gz data.tar.gz | gpg --verify _gpgorigin -

gpg: Signature made Tue Aug 01 22:21:11 2017 UTC
gpg:                using RSA key DBEF89774DDB9EB37D9FC3A03CFCF9BAF27EAB47
gpg:                issuer "support@gitlab.com"
gpg: Good signature from "GitLab, Inc. <support@gitlab.com>" [unknown]
Primary key fingerprint: DBEF 8977 4DDB 9EB3 7D9F  C3A0 3CFC F9BA F27E AB47
debsigs 구성

debsigs의 정책과 키링을 구성하는 것은 복잡할 수 있으므로 GitLab은 스크립트 방식의 gitlab-debsigs.sh를 제공합니다.

이 스크립트를 사용하려면 공개 키와 스크립트를 다운로드해야 합니다.

curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg"
curl -JLO "https://gitlab.com/gitlab-org/omnibus-gitlab/raw/master/scripts/gitlab-debsigs.sh"
chmod +x gitlab-debsigs.sh
sudo ./gitlab-debsigs.sh gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
debsig-verify로 확인

debsig-verify를 사용하려면 debsigs 구성 단계를 수행하고 debsig-verify 패키지를 설치해야 합니다.

debsig-verify gitlab-xxx.deb