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

Tier: Free, Premium, Ultimate

Offering: Self-managed

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

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

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

현재 키

키 속성
이름 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*/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 이후에 새로운 키 가져오기

최신 저장소 서명 키를 가져오기 위해 사용자는 설치 페이지에 언급된 바와 같이 GitLab 저장소를 추가하는 데 사용되는 curl 명령을 다시 실행할 수 있습니다.

이렇게 하면 새로운 키를 가져와서 사용자의 키링에 추가할 수 있습니다.

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

# 새로운 키 다운로드
curl "https://packages.gitlab.com/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
note
새로운 키가 OS에 의해 올바르게 인식될 수 있도록 필요한 권한이 있는지 확인하십시오. 권한은 644여야 합니다.

다음 명령을 실행하여 권한을 설정할 수 있습니다: chmod 644 <keyfile>.

이전 키

Sl. No. 키 ID 만료 날짜
1 1A4C 919D B987 D435 9396 38B9 1421 9A96 E15E 78F4 2020-04-15

패키지 서명

이 문서에서는 GitLab에서 생성한 패키지의 서명을 확인하는 방법을 수동 및 자동으로 지원되는 경우 제공할 것입니다.

RPM 기반 배포판

RPM 형식은 GPG 서명 기능의 전체 구현을 포함하고 있으므로, 해당 형식을 기반으로 한 패키지 관리 시스템과 완전히 통합되어 있습니다.

서명 확인 방법은 두 가지가 있습니다.

GitLab 공개 키가 존재하는지 확인

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

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