omnibus-gitlab
패키지와 관련된 암호화 세부 정보
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 패키지 리포지터리를 구성한 사용자들은 리포지터리에서 패키지를 계속 설치하려면 이 키를 다시 신뢰할 수 있는 키 링에 추가해야 합니다. 여기에 대한 설명은 다음과 같습니다.
이 키의 만료일은 2024-03-01에서 2026-02-27로 연장되었습니다.
2024-03-01
에 만료로 인한 불만을 만난다면, 업데이트된 공개 키 내용을 포함시키기 위해 만료 연장 후 키 업데이트 단계를 수행하세요.
만료 연장 후 키 업데이트
Debian 기반 배포판의 경우:
PackageCloud는 일반적으로 apt-key
를 사용했으며, 향후에는 사용되지 않게 될 것입니다. 매뉴얼으로 설치된 또는 구성된 리포지터리, 예를 들어 TurnKey Linux와 같은 일부 배포판에서는 이미 Debian 패키지 소스 디렉터리 내의 signed-by
지원을 사용하고 있습니다.
-
apt-key
또는signed-by
기능을 사용 중인지 확인하세요:grep 'deb \[signed-by=' /etc/apt/sources.list.d/gitlab_gitlab-?e.list
- 이
grep
명령어가 어떤 행을 반환하면signed-by
기능을 사용 중입니다. 이는apt-key
사용보다 우선됩니다. - 이 명령어가 반환된 행이 없다면
apt-key
기능을 사용 중입니다.
- 이
-
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
-
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 간에 약간의 차이가 있지만, 기본 구성은 동일합니다.
-
리포지터리 키링에서 기존 키를 제거합니다:
for pubring in /var/cache/dnf/gitlab_gitlab-?e-*/pubring do gpg --homedir $pubring --delete-key F6403F6544A38863DAA0B6E03F01618A51312F3F done
-
리포지터리 데이터/캐시를 업데이트하고 키를 확인합니다:
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
이전 키
일련번호 | 키 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가 설치되지 않았습니다
를 표시합니다. 키가 존재하지 않으면 아래의 단계를 수행하세요:
rpm --import https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
서명 확인이 활성화되어 있는지 확인
기존 설치에 패키지 서명 확인이 활성화되어 있는지 확인하는 가장 간단한 방법은 사용 중인 리포지터리 파일의 내용을 비교하는 것입니다.
- 리포지터리 파일의 존재 여부 확인:
/etc/yum.repos.d/gitlab_gitlab-ce.repo
파일을 확인합니다. -
서명 확인이 활성화되어 있는지 확인:
/etc/yum.repos.d/gitlab_gitlab-ce.repo
파일에 대한gpgcheck
를 확인합니다.repo_gpgcheck=1 gpgcheck=1
또는
repo_gpgcheck=1 pkg_gpgcheck=1
파일이 존재하지 않으면 리포지터리가 설치되어 있지 않습니다. 파일이 존재하지만 출력이 gpgpcheck=0
을 보인다면, 값을 편집하여 활성화해야 합니다.
자동 확인 활성화
rpm
도구 및 관련 패키지 관리자(yum
,zypper
)는 개입 없이 패키지를 자동으로 확인하는 기능을 직접 지원합니다. 이미 서명된 패키지가 제공되기 시작한 후 자동 리포지터리 구성 스크립트를 사용했다면 추가 조치가 필요하지 않습니다. 서명된 패키지가 제공되기 전에 설치했다면 필요한 변경을 가하거나 설치 페이지에서 찾을 수 있는 자동 리포지터리 구성 스크립트를 다시 실행할 수 있습니다.
Yum (RedHat, CentOS)
-
패키지의 GPG 확인 활성화
sudo sed -i'' 's/^gpgcheck=0/gpgcheck=1/' /etc/yum.repos.d/gitlab_gitlab-ce.repo
-
패키지 서명 공개 키를
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
-
yum
에게 리포지터리 캐시를 새로고침하도록 지시sudo yum -q makecache -y --disablerepo='*' --enablerepo='gitlab_gitlab-ce'
Zypper (SuSE/SLES)
-
패키지의 GPG 확인 활성화
sudo sed -i'' 's/pkg_gpgcheck=0/pkg_gpgcheck=1/' /etc/zypp/repos.d/gitlab_gitlab-ce.repo
-
패키지 서명 공개 키를
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
-
리포지터리를 새로 고치고 키를 가져오도록
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
기반 서명을 확인하려면 사용자는 다음 매뉴얼 단계를 완료할 수 있습니다:
-
패키지 서명 공개 키를 다운로드하고 가져오기
curl -JLO "https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg" gpg --import gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
-
서명 파일(
_gpgorigin
)을 추출ar x gitlab-ce-xxx.deb _gpgorigin
-
서명이 내용과 일치하는지 확인
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