CentOS 7에서 yum update 실행 시 GPG 키 오류를 해결하는 방법

안녕하세요. 지구 IDC 기술팀입니다.

오늘은 CentOS 7에서 yum update 실행 시 GPG 키 오류가 발생하는 원인과 해결 방법을 알아보겠습니다. 패키지를 내려받은 뒤 Public key for ... is not installed, GPG key retrieval failed, GPG check FAILED와 같은 메시지가 표시되면 저장소에 설정된 공개키, RPM 데이터베이스에 등록된 키, 실제 패키지 서명이 서로 일치하는지 확인해야 합니다.

GPG 검증은 내려받은 RPM 패키지가 신뢰할 수 있는 키로 서명되었는지 확인하는 보안 절차입니다. 문제를 우회하기 위해 gpgcheck=0이나 --nogpgcheck를 사용하기보다, 오류가 발생한 저장소를 식별하고 올바른 공식 키의 지문을 확인한 뒤 키와 캐시를 복구하는 방식으로 해결하는 것이 안전합니다.

적용 환경과 CentOS 7 지원 상태

항목 내용
운영체제 CentOS Linux 7
패키지 관리자 YUM + RPM
공식 CentOS 7 GPG 키 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
공식 키 ID F4A80EB5

오류 메시지와 저장소 확인

먼저 어떤 패키지와 저장소에서 오류가 발생하는지 확인합니다. 상세 출력을 활성화하여 업데이트를 실행합니다.

sudo yum -v update

오류가 발생한 패키지명, 저장소 ID, 키 ID 또는 gpgkey 경로를 기록하고 현재 저장소 상태를 확인합니다.

yum repolist all

외부 저장소가 원인인지 확인하려면 오류가 난 저장소를 일시적으로 제외해 비교할 수 있습니다. REPO_ID는 실제 저장소 ID로 변경합니다.

sudo yum --disablerepo=REPO_ID check-update

저장소의 GPG 설정 확인

YUM은 /etc/yum.conf/etc/yum.repos.d/*.repo를 읽습니다. GPG 검증과 키 경로를 확인합니다.

grep -nE '^[[:space:]]*gpgcheck[[:space:]]*=' /etc/yum.conf
sudo grep -RniE '^\[|^[[:space:]]*(enabled|gpgcheck|gpgkey|baseurl|mirrorlist)[[:space:]]*=' \
  /etc/yum.repos.d/*.repo

CentOS 7 공식 저장소는 일반적으로 다음 키 파일을 사용합니다.

gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7 공식 키와 지문 확인

공식 키 파일이 존재하는지 확인한 뒤 지문을 검증합니다.

ls -l /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 프로젝트가 공개한 CentOS 7 공식 서명 키는 다음과 같습니다.

키 ID F4A80EB5
지문 6341 AB27 53D7 8A78 A7C2 7BB1 24C6 A8A7 F4A8 0EB5

RPM 데이터베이스에 등록된 공개키도 확인합니다.

rpm -qa 'gpg-pubkey*' | sort
rpm -qi gpg-pubkey-f4a80eb5-* 2>/dev/null

CentOS 7 공식 GPG 키 다시 등록

키 파일의 지문이 위 공식 값과 정확히 일치한다면 RPM 데이터베이스에 키를 등록합니다.

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm -qi gpg-pubkey-f4a80eb5-* 2>/dev/null

같은 오류가 계속된다면 해당 패키지가 외부 저장소 키로 서명되었거나 캐시된 RPM이 손상되었는지 확인합니다.

키 파일이 없거나 손상된 경우

먼저 centos-release 패키지의 파일 상태를 확인합니다.

rpm -q centos-release
rpm -V centos-release

정상적인 로컬 키 파일을 복구할 수 없다면 CentOS 프로젝트의 공식 키 URL에서 임시 파일로 내려받고, 등록 전에 지문을 반드시 확인합니다.

curl -fL \
  https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7 \
  -o /tmp/RPM-GPG-KEY-CentOS-7

gpg --quiet --with-fingerprint /tmp/RPM-GPG-KEY-CentOS-7

지문이 6341 AB27 53D7 8A78 A7C2 7BB1 24C6 A8A7 F4A8 0EB5와 일치할 때만 설치하고 가져옵니다.

sudo install -o root -g root -m 0644 \
  /tmp/RPM-GPG-KEY-CentOS-7 \
  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

YUM 캐시와 RPM 재검증

키가 정상인데 GPG check FAILED가 반복되면 캐시된 RPM이 손상되었을 수 있습니다. 다른 YUM 또는 RPM 작업이 없는지 먼저 확인합니다.

ps -ef | grep -E '[y]um|[r]pm'

다른 패키지 작업이 없다면 캐시를 정리하고 다시 생성합니다.

sudo yum clean all
sudo yum makecache
sudo yum update

캐시에 남은 RPM 파일의 서명을 직접 확인하려면 먼저 경로를 찾습니다.

find /var/cache/yum -type f -name '*.rpm' -print

실제 RPM 경로를 지정하여 검사합니다.

rpm -K /var/cache/yum/REPO_PATH/packages/PACKAGE_FILE.rpm

외부 저장소 GPG 오류 확인

EPEL, Remi, Docker, MariaDB, PostgreSQL 등 외부 저장소는 CentOS 공식 키가 아닌 자체 서명 키를 사용할 수 있습니다. 따라서 외부 저장소 패키지에서 오류가 발생했다면 CentOS 7 키만 반복해서 등록해서는 해결되지 않습니다.

sudo grep -RniE '^\[|^[[:space:]]*(name|enabled|gpgcheck|gpgkey|baseurl|mirrorlist)[[:space:]]*=' \
  /etc/yum.repos.d/*.repo

오류 저장소의 gpgkey=가 해당 공급자의 공식 문서에서 안내한 키인지, 해당 공급자가 아직 CentOS 7 저장소를 제공하는지 확인합니다.

CentOS 7 EOL 저장소 오류와 GPG 오류 구분

CentOS 7은 EOL 이후 기존 미러 구조가 변경되어 yum update에서 저장소 접속 오류가 나타날 수 있습니다. 다음 메시지는 GPG 키 오류와 별개입니다.

  • Cannot find a valid baseurl for repo
  • Could not resolve host
  • HTTP 404 또는 기존 mirrorlist 접속 실패
  • Cannot retrieve metalink for repository

현재 저장소 URL을 확인합니다.

sudo grep -RniE '^\[|^[[:space:]]*(baseurl|mirrorlist|enabled)[[:space:]]*=' \
  /etc/yum.repos.d/*.repo

해결 여부 확인

키와 저장소 설정을 복구한 뒤 다음 순서로 확인합니다.

gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm -qa 'gpg-pubkey*' | sort
sudo yum clean all
sudo yum makecache
sudo yum check-update

GPG 관련 오류가 더 이상 발생하지 않는다면 실제 업데이트를 자동 승인 없이 실행해 트랜잭션을 확인합니다.

sudo yum update

오류 유형별 해결 방법

증상 가능한 원인 확인 방법 해결 방향
Public key for ... is not installed 해당 공개키가 RPM DB에 없음 rpm -qa 'gpg-pubkey*'와 저장소 ID 확인 공식 지문을 검증한 올바른 키 등록
GPG key retrieval failed gpgkey 경로 오류 또는 키 파일 누락 repo 파일과 실제 파일·URL 확인 공식 키 경로 복구 후 가져오기
GPG check FAILED 잘못된 키, 손상된 RPM, 다른 저장소 패키지 rpm -K, 패키지 출처 확인 캐시 재다운로드 또는 올바른 저장소로 복구
키 등록 후에도 반복 외부 저장소가 다른 키를 사용 yum -v updategpgkey 비교 공급자 공식 키와 CentOS 7 지원 여부 확인
Cannot find a valid baseurl EOL 저장소, DNS 또는 URL 문제 저장소 URL과 DNS 확인 GPG와 별도로 EOL 저장소 문제 해결

원상복구 방법

저장소 파일을 수정하기 전에는 전체 디렉터리를 백업합니다.

sudo cp -a /etc/yum.repos.d \
  /root/yum.repos.d.before-gpg-fix

repo 파일을 잘못 수정했다면 백업본으로 복원합니다.

sudo rm -rf /etc/yum.repos.d
sudo cp -a /root/yum.repos.d.before-gpg-fix /etc/yum.repos.d
sudo yum clean all

관련 지구 IDC 기술자료

공식 참고자료

기관 문서 확인 내용 조회일
CentOS Project CentOS GPG Keys CentOS 7 공식 키 ID와 지문
CentOS Project RPM-GPG-KEY-CentOS-7 CentOS 7 공식 공개키 원본
Red Hat RHEL 7 System Administrator's Guide — YUM repositories gpgcheck과 저장소 설정
RPM Project rpmkeys(8) 공개키 가져오기와 RPM 서명 검사

자주 묻는 질문

gpgcheck=0으로 바꾸면 업데이트가 되는데 그대로 사용해도 되나요?

권장하지 않습니다. 패키지 서명 검증이 비활성화되므로 변조되거나 출처가 잘못된 RPM을 설치할 위험이 있습니다.

CentOS 7 공식 GPG 키의 지문은 무엇인가요?

키 ID는 F4A80EB5이며 전체 지문은 6341 AB27 53D7 8A78 A7C2 7BB1 24C6 A8A7 F4A8 0EB5입니다.

EPEL 패키지 오류에도 CentOS 키를 다시 등록하면 되나요?

아닙니다. 외부 저장소는 자체 서명 키를 사용할 수 있으므로 해당 공급자의 공식 키와 지문을 확인해야 합니다.

yum clean all을 실행하면 설치된 패키지가 삭제되나요?

아닙니다. YUM 캐시와 메타데이터를 정리할 뿐 설치된 RPM 패키지를 제거하지 않습니다.

GPG 오류를 해결하면 CentOS 7을 계속 안전하게 사용할 수 있나요?

GPG 오류 해결과 운영체제 지원 상태는 별개입니다. CentOS 7은 이미 지원 종료되었으므로 장기 운영 서버는 지원 중인 운영체제로 이전하는 것이 필요합니다.

마무리

오늘은 CentOS 7에서 yum update 실행 시 GPG 키 오류가 발생할 때 저장소와 오류 패키지를 식별하고, CentOS 7 공식 키의 지문을 검증한 뒤 RPM 데이터베이스에 다시 등록하는 방법을 설명드렸습니다.

CentOS 공식 패키지의 키 문제와 외부 저장소의 키 문제는 반드시 분리해서 확인해야 하며, GPG 검증을 비활성화하는 방식으로 우회해서는 안 됩니다. 키가 정상인데도 오류가 계속된다면 YUM 캐시, 패키지 서명과 저장소의 CentOS 7 지원 여부까지 함께 점검하십시오.

CentOS 7은 이미 공식 지원이 종료된 운영체제이므로 장애를 복구한 이후에는 지원 중인 운영체제로의 이전도 함께 검토하시기 바랍니다. 오늘 준비한 내용은 여기까지입니다.

  • 0 Users Found This Useful
Was this answer helpful?
« Back