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

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

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

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

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

현재 키

키 속성
이름 GitLab B.V.
이메일 packages@gitlab.com
주석 package repository signing key
지문 F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
만료일 2026-02-27

이 키는 2020-04-06부터 활성화되었습니다. 기존 사용자 중 이미 GitLab apt/yum 패키지 저장소를 구성한 사용자는 해당 저장소에서 패키지를 설치하기 위해 다시 이 키를 검색하고 신뢰하는 키 링에 추가해야 합니다. 이로써 apt/yum이 불일치에 대한 경고를 표시하지 않게 됩니다. 불일치에 대한 경고에 관한 설명은 아래에서 설명되어 있습니다.

이 키의 만료일이 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 이후의 새 키 검색

최신 저장소 서명 키를 가져오려면 사용자(들)는 설치 페이지에 언급된 것처럼 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

참고: 새 키가 OS에서 정상적으로 인식되도록 필요한 권한이 있는지 확인하십시오. 권한은644여야 합니다. 다음 명령으로 권한을 설정할 수 있습니다: chmod 644 <키파일>.

이전 키

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

패키지 서명

이 문서에서는 GitLab에서 생성한 패키지 서명을 수동 및 자동으로 확인하는 방법을 제공합니다. 이는 해당 기능을 지원하는 경우 RPM 기반 배포판의 패키지 관리 시스템과 완전히 통합되어 있습니다.

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
  • 서명 확인이 활성화되어 있는지 확인: /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를 사용하거나 내장된 _gpgorigin 파일을 GnuPG로 수동으로 확인하는 두 가지 방법으로 수행할 수 있습니다.

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